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

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

?? wncan.c

?? CANOPen通信的一些源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* wnCAN.c - implementation of Windnet CAN Interface *//* Copyright 2001 Wind River Systems, Inc. *//*modification history--------------------09nov01,dnb modified for integration into Tornado12jul01,jac written*//*DESCRIPTIONThis file contains the functions that implement the interface defined in thewnCAN.h header file.*//* includes */#include <vxWorks.h>#include <errnoLib.h>#include <CAN/wnCAN.h>#include <CAN/canBoard.h>#include <CAN/canController.h>/* global variables */const static WNCAN_VersionInfo info = {1,2};/************************************************************************** WNCAN_GetVersion - return current major and minor revision*** RETURNS:pointer to WNCAN_VersionInfo** ERRNO: N/A**/const WNCAN_VersionInfo *WNCAN_GetVersion(void){    return &info;}/************************************************************************** defaultISRCallBack - do nothing but return** The default ISR callback serves as a placeholder and does nothing** RETURNS: N/A** ERRNO: N/A**/static void defaultISRCallback(    WNCAN_DEVICE *pDev,    WNCAN_IntType stat,    UCHAR chnNum){    return;}/************************************************************************** establishLinks - initialize function pointers in the Device structure** This routine connects the function pointers in the CAN_Device* data structure to the appropriate routines.** RETURNS: OK or ERROR** ERRNO: S_can_invalid_parameter**/STATUS CAN_DEVICE_establishLinks(    WNCAN_DEVICE *pDev,    WNCAN_BoardType brdType,    WNCAN_ControllerType ctrlType){    STATUS retCode = OK;    /* check for null pointer */    if(pDev == 0)    {        errnoSet(S_can_invalid_parameter);        retCode = ERROR;    }    else    {        /* save board and controller types */        pDev->pCtrl->ctrlType = ctrlType;        pDev->pBrd->brdType = brdType;        /* establish controller links */        retCode = WNCAN_Controller_establishLinks(pDev, ctrlType);        /* establish board links */        retCode = WNCAN_Board_establishLinks(pDev, brdType);        /* set default isr callback */        pDev->pISRCallback = defaultISRCallback;    }    return retCode;}/************************************************************************** CAN_InstallISRCallback - initialize ISR callback** RETURNS: OK or ERROR** ERRNO: S_can_invalid_parameter**/STATUS CAN_InstallISRCallback(    struct WNCAN_Device *pDev,    void (*pFun)(struct WNCAN_Device *pDev2,WNCAN_IntType                 intStatus, UCHAR channelNum)){   if(!pDev || !pFun)   {        errnoSet(S_can_invalid_parameter);        return ERROR;    }    else        pDev->pISRCallback = pFun;    return OK;}/************************************************************************** WNCAN_Open - return a handle to the requested WNCAN_DEVICE** RETURNS: pointer to valid WNCAN_DEVICE, or 0 if an error occurred** ERRNO: N/A**/struct WNCAN_Device *WNCAN_Open(    unsigned int brdType,    unsigned int brdNdx,    unsigned int ctrlNdx){    return  WNCAN_Board_Open(brdType, brdNdx, ctrlNdx);}/************************************************************************** WNCAN_Close - close the handle to the requested WNCAN_DEVICE** RETURNS: N/A** ERRNO: N/A**/void WNCAN_Close(struct WNCAN_Device *pDev){	if(pDev != NULL)		WNCAN_Board_Close(pDev);    return;}/************************************************************************** WNCAN_GetMode - get the channel mode** This routine returns the mode of the channel.** RETURNS: the channel mode** ERRNO:   N/A**/WNCAN_ChannelMode WNCAN_GetMode(struct WNCAN_Device *pDev, UCHAR chn){    WNCAN_ChannelMode cm = WNCAN_CHN_INVALID;    if(chn < pDev->pCtrl->numChn)        cm = pDev->pCtrl->chnMode[chn];    return cm;}/************************************************************************* WNCAN_SetMode - set the mode of the channel.** This function sets the mode of the channel to one of five values:* WNCAN_CHN_TRANSMIT, WNCAN_CHN_RECEIVE, WNCAN_CHN_INACTIVE, * and in addition for advanced controllers,* WNCAN_CHN_RTR_REQUESTER, or WNCAN_CHN_RTR_RESPONDER.* All available channels can be configured to be WNCAN_CHN_INACTIVE.* The channels available for transmitting or receiving messages are* determined by the device hardware, and therefore ,may or may not be* configurable with this function call. If an attempt is made to set the mode * of a channel to WNCAN_CHN_RTR_RESPONDER or WNCAN_CHN_RTR_REQUESTER for a* simple CAN controller such as SJA1000, WNCAN_CHN_INVALID is returned and an* and errorno is set to reflect the error. * The preferred approach is to allow the device driver to manage the channels * internally using the CAN_GetTxChannel(), CAN_GetRxChannel(), * CAN_GetRTRRequesterChannel(), CAN_GetRTRResponderChannel() and* CAN_FreeChannel() function calls.** WNCAN_SetMode, does not affect channel setting in hardware.** RETURNS: ERROR if the requested channel number is out of range,*           OK otherwise ** ERRNO: S_can_illegal_channel_no**/STATUS WNCAN_SetMode(struct WNCAN_Device *pDev, UCHAR channelNum,					 WNCAN_ChannelMode mode){    STATUS retCode = OK;	    if(channelNum >= pDev->pCtrl->numChn)    {        errnoSet(S_can_illegal_channel_no);        retCode = ERROR;    }    else    {        switch(mode)        {		case WNCAN_CHN_TRANSMIT:			if((pDev->pCtrl->chnType[channelNum] == WNCAN_CHN_TRANSMIT) ||				(pDev->pCtrl->chnType[channelNum] == WNCAN_CHN_TRANSMIT_RECEIVE))			{				pDev->pCtrl->chnMode[channelNum] = WNCAN_CHN_TRANSMIT;			}			else			{				errnoSet(S_can_illegal_config);				retCode = ERROR;			}						break;					case WNCAN_CHN_RECEIVE:			if((pDev->pCtrl->chnType[channelNum] == WNCAN_CHN_RECEIVE) ||				(pDev->pCtrl->chnType[channelNum] == WNCAN_CHN_TRANSMIT_RECEIVE))			{								pDev->pCtrl->chnMode[channelNum] = WNCAN_CHN_RECEIVE;			}			else			{				errnoSet(S_can_illegal_config);				retCode = ERROR;			}						break;					case WNCAN_CHN_RTR_REQUESTER:		/* The hardware type of the channel will be transmit and receive only			in advanced controllers such as TouCAN and I82527 */			if(pDev->pCtrl->chnType[channelNum] == WNCAN_CHN_TRANSMIT_RECEIVE)			{				pDev->pCtrl->chnMode[channelNum] = WNCAN_CHN_RTR_REQUESTER;			}			else			{				errnoSet(S_can_rtr_mode_not_supported);				retCode = ERROR;			}						break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩精品一区二区三区四区 | 日本欧美一区二区在线观看| 精品一二三四区| 91老师片黄在线观看| 久久久一区二区| 舔着乳尖日韩一区| av电影在线观看一区| 久久影视一区二区| 日日夜夜免费精品| 欧美唯美清纯偷拍| 一区二区在线观看视频在线观看| 国产精品99久久久久久有的能看| 日韩亚洲欧美高清| 日韩精品91亚洲二区在线观看| 日本道精品一区二区三区| 中文一区二区在线观看| 九九视频精品免费| 精品久久一区二区三区| 捆绑变态av一区二区三区| 欧美日韩综合色| 亚洲va韩国va欧美va| 欧美巨大另类极品videosbest | 亚洲国产日韩一级| 91麻豆精东视频| 综合久久综合久久| 91麻豆自制传媒国产之光| 亚洲丝袜另类动漫二区| 成人国产精品免费观看| 国产精品情趣视频| 成人在线一区二区三区| 国产精品进线69影院| 97se亚洲国产综合自在线不卡| 亚洲国产高清不卡| 91在线免费视频观看| 亚洲日本va午夜在线电影| 色天使久久综合网天天| 亚洲一区视频在线| 欧美日本一区二区三区四区| 婷婷亚洲久悠悠色悠在线播放| 欧美亚州韩日在线看免费版国语版| 夜夜精品视频一区二区| 欧美日韩电影在线播放| 毛片一区二区三区| 久久久九九九九| 91免费观看国产| 五月婷婷激情综合网| 精品国产成人系列| 福利一区二区在线观看| 一区在线播放视频| 欧美视频在线播放| 国产一区在线观看麻豆| 国产精品女同互慰在线看| 在线视频中文字幕一区二区| 视频一区在线播放| 国产色综合一区| 色婷婷精品久久二区二区蜜臂av| 亚洲大片免费看| 久久一夜天堂av一区二区三区| 成人短视频下载| 三级精品在线观看| 国产精品免费久久| 6080国产精品一区二区| 成人综合激情网| 亚洲福利国产精品| 国产人成亚洲第一网站在线播放 | 一区二区三区四区在线| 91精品国产免费久久综合| 处破女av一区二区| 日韩精品亚洲专区| 自拍视频在线观看一区二区| 欧美一级日韩不卡播放免费| 91美女在线观看| 国产精品主播直播| 日韩中文字幕一区二区三区| 国产亚洲成aⅴ人片在线观看| 91成人免费在线| 懂色av一区二区三区免费观看| 午夜精品福利久久久| 亚洲欧洲成人精品av97| 日韩精品一区二区三区swag| 欧美性大战久久久久久久| 国产电影一区在线| 玖玖九九国产精品| 亚洲国产成人porn| 亚洲欧洲国产日本综合| 久久久久久亚洲综合影院红桃| 色国产精品一区在线观看| 国产成人精品www牛牛影视| 久久精品免费观看| 亚洲国产精品久久久久秋霞影院| 亚洲视频中文字幕| 国产精品国产三级国产有无不卡 | 欧美日韩高清一区二区不卡| 99re热这里只有精品免费视频| 国产在线看一区| 青青国产91久久久久久 | 日本伊人午夜精品| 国产精品久久久久久久久免费相片 | 日本不卡视频在线| 一区二区三区四区亚洲| 亚洲欧洲av在线| 中文字幕色av一区二区三区| 国产午夜亚洲精品羞羞网站| 精品蜜桃在线看| 日韩三级视频在线观看| 91精品久久久久久久91蜜桃| 欧美日韩精品一区二区天天拍小说 | 亚洲丝袜另类动漫二区| 亚洲欧洲精品天堂一级| 国产精品成人免费在线| 亚洲国产经典视频| 日本一区二区三区dvd视频在线| 精品成人a区在线观看| 精品国产免费一区二区三区香蕉 | 欧美激情一区二区三区| 欧美激情一二三区| 国产精品久久久久久久岛一牛影视 | 欧美日本在线播放| 在线不卡的av| 欧美videossexotv100| 精品国产一区二区三区久久久蜜月| 欧美成人官网二区| 26uuu欧美日本| 中文无字幕一区二区三区| 国产精品视频线看| 亚洲精品久久久蜜桃| 亚洲成人av福利| 久久99国产精品久久99果冻传媒| 精品一区二区三区在线观看| 国产精品夜夜爽| 97aⅴ精品视频一二三区| 欧美午夜精品久久久久久超碰| 91精品国产91久久久久久最新毛片 | 精品国产电影一区二区| 欧美国产禁国产网站cc| 一区二区三区小说| 三级在线观看一区二区| 激情综合五月天| 91在线高清观看| 91精品国产福利| 国产精品免费视频网站| 伊人夜夜躁av伊人久久| 久久国产福利国产秒拍| 99视频精品全部免费在线| 欧美日韩国产综合视频在线观看| 精品国产乱子伦一区| 国产精品国产三级国产普通话蜜臀 | 中文欧美字幕免费| 亚洲一区二区视频| 国产一区二区主播在线| 一本久久a久久精品亚洲| 日韩午夜电影在线观看| 亚洲欧美区自拍先锋| 日韩中文字幕av电影| fc2成人免费人成在线观看播放| 欧美老肥妇做.爰bbww视频| 国产人久久人人人人爽| 首页欧美精品中文字幕| 99免费精品在线观看| 日韩午夜电影av| 一区二区三区91| 成人av在线资源网| 26uuu久久天堂性欧美| 亚洲国产精品人人做人人爽| 成人国产精品视频| 日韩一区二区免费电影| 亚洲一区二区三区激情| 成人av在线电影| 久久久久久久久久电影| 日本亚洲欧美天堂免费| 欧美性生活大片视频| 国产精品国产三级国产aⅴ原创 | 男男视频亚洲欧美| 欧美三级日韩三级| 一区二区中文字幕在线| 精品一区在线看| 日韩亚洲欧美中文三级| 亚洲成人av中文| 欧美性猛交一区二区三区精品| 国产精品免费观看视频| 高清不卡一区二区| 久久久久久久久99精品| 紧缚奴在线一区二区三区| 777午夜精品视频在线播放| 一级中文字幕一区二区| 91在线精品一区二区| 国产精品毛片无遮挡高清| 国产成人精品免费在线| 国产清纯美女被跳蛋高潮一区二区久久w | 久久久久久久久久久99999| 美女视频黄免费的久久| 日韩三级视频在线观看| 麻豆精品蜜桃视频网站| 欧美电影免费观看完整版| 男女性色大片免费观看一区二区 | 久草在线在线精品观看| 欧美mv日韩mv国产| 久久99国产乱子伦精品免费| 精品嫩草影院久久| 国产成人欧美日韩在线电影|