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

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

?? linmsg.c

?? 基于FREESCALE單片機9S08DZ60的LIN從節點的應用層源代碼.LIN是通過UART串口來實現的.開發環境為CODEWARRIOR FOR HC08
?? C
字號:
#define LINMSG_C
/******************************************************************************
*                                                       
*       Copyright (C) 2005 Freescale Semiconductor, Inc.
*       All Rights Reserved								              
*														                            
* Filename:     linmsg.c                
*														                            
* Revision:      										                    
*														                            
* Functions:    Message processing subsystem 
*												                            
* Description:  
*
* Notes:        
*
******************************************************************************/

#include <linbase.h>

#if !defined(LINAPI_1_0)

/****************************************************************************
 * Function prototypes 
 ***************************************************************************/
static void LinMemCopy( LIN_BYTE * dst, LIN_BYTE * src, LIN_BYTE len);


/****************************************************************************
 * Functions 
 ***************************************************************************/


 /***************************************************************************
 * Function :   LinMemCopy
 *
 * Description: Copy data from src to dst
 *
 * Returns:     none
 *
 * Notes:       
 *
 **************************************************************************/
void LinMemCopy( LIN_BYTE * dst, LIN_BYTE * src, LIN_BYTE len)
{
    while( len > 0 )
    {
        len-- ;
        dst[len] = src[len];
    }
    return;
}


/***************************************************************************
 * Function :   LIN_GetMsg
 *
 * Description: Find message and copy the message data to the buffer
 *
 * Returns:
 *  LIN_NO_ID       - msg is not configured for this node
 *  LIN_INVALID_ID  - msg is received by this node (but data is copied)
 *  LIN_MSG_NODATA  - msg data has not been received so far
 *  LIN_OK          - msg data is copied to the buffer
 *
 * Notes:       API function, OPTIM
 *
 **************************************************************************/
LINStatusType   LIN_GetMsg( LINMsgIdType msgId, LINMsgRefType msgData )
{
    LIN_BYTE    idx;
    LIN_BYTE    intMask;
    LIN_BYTE    retStatus;

    /* check requested Id */
    if ( msgId > (LIN_BYTE) LIN_FRAME_MAX_ID )
    {
        /* Id is not valid */
        return LIN_NO_ID;
    }

    /* Search message */
    idx = LinLookupTable[msgId];

    if ( (idx & LIN_MSG_NOT_IGNORED) == 0 )
    {
        /* message is ignored by this node */
        return LIN_NO_ID;
    }

    LIN_DBG_SET_PORT_7;
    intMask = LIN_DisableInt();         /* disable interrupts */

    /* If we transmit this message return error */
    if ( idx & LIN_MSG_SEND ) 
    {
        /* we send this message, but copy anyway */
        /* NB: not initialized data can be copied ! */

#if defined(MASTER)
        LinMemCopy( msgData, LinMsgBuf[idx & LIN_MSG_INDEX_MASK], LinLengthTable[msgId]);
#endif /* defined(MASTER) */

#if defined(SLAVE)
        /* Message's index is least 6 bits. */
        idx &= LIN_MSG_INDEX_MASK;

        LinMemCopy( msgData, LinMsgBuf[idx], LinMsgLen[idx]);
#endif /* defined(SLAVE) */

        /* don't change msg status */

        retStatus = LIN_INVALID_ID;
    }
    else
    {
        /* we receive this message */

        /* Message's index is least 6 bits. */
        idx &= LIN_MSG_INDEX_MASK;

                                 /* LinMsgStatus can be change from interrupt only to LIN_MSG_OK or */
                                 /* LIN_MSG_OVERRUN so we didn`t need close interrupt early  */
                                 /* ??? paranoia: LinMsgStatus can be changed to LIN_MSG_NODATA only from */ 
                                 /* LIN_Init if call it from interrupt */

        /* Check if there is data */
        if (( LinMsgStatus[idx] & LIN_MSG_NODATA ) != 0 )
        {
            /* no data -> don't copy */
            retStatus = LIN_MSG_NODATA;
        }
        else
        {    
            /* If message was found copy the data */

#if defined(MASTER)
            LinMemCopy( msgData, LinMsgBuf[idx], LinLengthTable[msgId]);
#endif /* defined(MASTER) */

#if defined(SLAVE)
            LinMemCopy( msgData, LinMsgBuf[idx], LinMsgLen[idx]);
#endif /* defined(SLAVE) */

            /* change message status */
            LinMsgStatus[idx] = LIN_MSG_NOCHANGE;

            retStatus   = LIN_OK;
        }    
    }
    
    LIN_EnableInt(intMask);             /* enable interrupts */
    LIN_DBG_CLR_PORT_7;

    return retStatus;
}

/***************************************************************************
 * Function :   LIN_PutMsg
 *
 * Description: find and write message 
 *
 * Returns:
 *  LIN_NO_ID       - msg is not configured for this node
 *  LIN_INVALID_ID  - msg is transmitted by this node
 *  LIN_OK          - data is copied to the msg buffer
 *
 * Notes:        API function, OPTIM
 *
 **************************************************************************/
LINStatusType   LIN_PutMsg( LINMsgIdType msgId, LINMsgRefType msgData )
{
    LIN_BYTE    idx;
    LIN_BYTE    intMask;
    
    /* check requested Id */
    if ( msgId > (LIN_BYTE) LIN_FRAME_MAX_ID )
    {
        /* Id is not valid */
        return LIN_NO_ID;
    }

    /* Search message */
    idx = LinLookupTable[msgId];

    if ( (idx & LIN_MSG_NOT_IGNORED) == 0 )
    {
        /* message is ignored by this node */
        return LIN_NO_ID;
    }

    /* If we receive this message return error */
    if ( ( idx & LIN_MSG_SEND ) == 0 )
    {
        return LIN_INVALID_ID;
    }

    /* Node process this message. Message's index is least 6 bits. */
    idx &= LIN_MSG_INDEX_MASK;

    LIN_DBG_SET_PORT_7;
    intMask = LIN_DisableInt();     /* disable interrupts */

    /* If message was found then copy the data */

#if defined(MASTER)
    LinMemCopy( LinMsgBuf[idx], msgData, LinLengthTable[msgId]);
#endif /* defined(MASTER) */

#if defined(SLAVE)
    LinMemCopy( LinMsgBuf[idx], msgData, LinMsgLen[idx]);
#endif /* defined(SLAVE) */

    /* change the status */
    LinMsgStatus[idx] = LIN_MSG_NOCHANGE | LIN_MSG_UPDATED;
    
    LIN_EnableInt(intMask);         /* enable interrupts */
    LIN_DBG_CLR_PORT_7;

    return LIN_OK;
}

/***************************************************************************
 * Function :   LIN_MsgStatus
 *
 * Description: Return current message status 
 *
 * Returns:    
 * When message is specified as received:
 *  LIN_NO_ID           - msg is not configured for this node
 *  LIN_OK              - msg data changed since last LIN_GetMsg call;
 *  LIN_MSG_NOCHANGE    - msg data not received since last LIN_GetMsg call;
 *  LIN_MSG_NODATA      - msg data not received since driver initialization;
 *  LIN_MSG_OVERRUN     - msg data was overwritten by driver before read.
 *
 * When message is specified as transmitted:
 *  LIN_NO_ID           - msg is not configured for this node
 *  LIN_OK              - msg data transmitted since last LIN_PutMsg call;
 *  LIN_MSG_NOCHANGE    - msg data not transmitted since last LIN_PutMsg call;
 *  LIN_MSG_NODATA      - msg data not updated since driver initialization.
 * 
 * Notes:               API function, OPTIM
 *
 **************************************************************************/
LINStatusType   LIN_MsgStatus( LINMsgIdType msgId )
{
    LIN_BYTE    idx;

    /* check requested Id */
    if ( msgId > (LIN_BYTE) LIN_FRAME_MAX_ID )
    {
        /* Id is not valid */
        return LIN_NO_ID;
    }

    /* Search message */
    idx = LinLookupTable[msgId];

    if ( (idx & LIN_MSG_NOT_IGNORED) == 0 )
    {
        /* message is ignored by this node */
        return LIN_NO_ID;
    }

    /* Node process this message. Message's index is least 6 bits. */
    return ( LinMsgStatus[idx & LIN_MSG_INDEX_MASK] & LIN_MSG_STATUS_MASK );
}

#endif /* !defined(LINAPI_1_0) */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一级二级| 日韩欧美中文字幕一区| 成人欧美一区二区三区小说| 色狠狠综合天天综合综合| 亚洲r级在线视频| 精品国产三级电影在线观看| 国产成人综合在线| 欧美精品在线观看播放| 九色综合狠狠综合久久| 精品一区二区三区久久久| 成人性生交大合| 一区二区三区在线不卡| 日韩精品专区在线影院重磅| 播五月开心婷婷综合| 久久精品久久99精品久久| 亚洲欧美综合色| 日韩午夜激情视频| thepron国产精品| 国产一区二区成人久久免费影院| 亚洲男同性视频| 欧美成人三级在线| 欧美性淫爽ww久久久久无| 国产精品91一区二区| 亚洲欧洲一区二区三区| 久久综合九色综合97婷婷| 色综合久久久久久久久久久| 激情五月婷婷综合| 亚洲综合视频在线观看| 18成人在线视频| ww亚洲ww在线观看国产| 91精品欧美一区二区三区综合在 | 2024国产精品| 韩日av一区二区| 亚洲国产精品麻豆| 国产精品无遮挡| 欧美成人女星排行榜| 在线播放91灌醉迷j高跟美女 | 欧美一级片在线| 成人的网站免费观看| 国产一区二区在线看| 日韩福利电影在线观看| 亚洲精品日产精品乱码不卡| 国产精品美女一区二区三区| 欧美tk—视频vk| 欧美精品777| 色婷婷久久99综合精品jk白丝| 91在线你懂得| 成人福利视频在线| 国产成人免费高清| 成人avav影音| 成人激情开心网| 国产剧情一区二区| 亚洲成av人片在线观看无码| 天天综合色天天综合| 亚洲香肠在线观看| 亚洲综合一区二区| 亚洲精品久久久久久国产精华液| 18欧美亚洲精品| 中文字幕永久在线不卡| 中文字幕亚洲欧美在线不卡| 国产精品福利一区| 国产精品国产三级国产有无不卡 | 福利一区二区在线| 国产一区二区三区在线观看免费| 丝袜亚洲另类欧美| 五月激情综合婷婷| 国产欧美一区二区三区沐欲| 日本一区二区三级电影在线观看| 国产人久久人人人人爽| 国产欧美一区二区三区鸳鸯浴| 久久综合九色综合欧美98| 久久久久亚洲蜜桃| 国产精品―色哟哟| 亚洲欧美一区二区视频| 日本一不卡视频| 麻豆精品在线播放| 国产精品一卡二卡在线观看| 91视频在线看| 欧美日韩视频不卡| 精品少妇一区二区三区日产乱码| 久久久久9999亚洲精品| 亚洲欧美国产三级| 日韩综合小视频| 国产精品一区在线观看乱码| 国内精品伊人久久久久av影院| 国产专区综合网| 99久久久精品| 另类欧美日韩国产在线| 亚洲成人你懂的| 免费高清在线一区| 久久se精品一区精品二区| 国产99久久久久久免费看农村| 99国内精品久久| 在线精品观看国产| 久久精品人人做人人爽97 | 亚洲欧洲精品成人久久奇米网 | 亚洲福利视频导航| 奇米影视7777精品一区二区| 国产在线一区二区综合免费视频| 91视频com| 日韩午夜激情免费电影| 国产精品全国免费观看高清 | 中文字幕不卡一区| 亚洲尤物在线视频观看| 日韩影院精彩在线| 色婷婷香蕉在线一区二区| 日韩美女主播在线视频一区二区三区 | 亚洲成a人v欧美综合天堂下载| 国内欧美视频一区二区| 成人一区二区三区| 日韩精品一区在线| 亚洲黄网站在线观看| 美女免费视频一区二区| 成人免费视频网站在线观看| 日韩三级中文字幕| 中文字幕制服丝袜成人av | 日本一区免费视频| 国产成人午夜高潮毛片| 精品久久99ma| 国产精品一卡二卡| 精品视频1区2区3区| 国产欧美日韩不卡| 国产色一区二区| 国产在线麻豆精品观看| a在线播放不卡| 2023国产精品| 亚洲国产精品一区二区久久| 99热精品一区二区| 中文字幕在线观看一区二区| 国产sm精品调教视频网站| 国产女主播在线一区二区| 成人动漫一区二区| 亚洲五码中文字幕| 欧美v日韩v国产v| 国产成人aaaa| 日本在线不卡视频一二三区| 欧美午夜理伦三级在线观看| 中文字幕欧美国产| 国产成人av电影免费在线观看| 日本高清视频一区二区| 国产亚洲婷婷免费| 91亚洲国产成人精品一区二三| 亚洲精品成人天堂一二三| 欧美v日韩v国产v| 成人黄色网址在线观看| 最近中文字幕一区二区三区| 欧美剧在线免费观看网站 | 18欧美亚洲精品| 欧美视频日韩视频| 678五月天丁香亚洲综合网| 精品对白一区国产伦| 中文一区在线播放| 91影视在线播放| 91欧美一区二区| 亚洲综合在线免费观看| 欧美三区在线观看| 日本亚洲最大的色成网站www| 欧美一区二区日韩| 国产一区二区三区高清播放| 国产情人综合久久777777| jizz一区二区| 亚洲黄色小说网站| 91精品国产91久久综合桃花| 激情五月婷婷综合| 中文字幕在线一区| 欧美日韩亚洲综合一区| 九九在线精品视频| 国产精品久久久久国产精品日日| 99精品黄色片免费大全| 亚洲h精品动漫在线观看| 精品对白一区国产伦| 99re在线精品| 三级在线观看一区二区| 久久影视一区二区| 91丝袜国产在线播放| 日韩欧美区一区二| 欧美日韩免费高清一区色橹橹| 国产欧美日韩激情| 成人av电影在线播放| 亚洲国产精品嫩草影院| 欧洲亚洲精品在线| 久久综合九色综合97婷婷| 国产精品福利影院| a4yy欧美一区二区三区| 国产欧美一区二区三区鸳鸯浴 | 国产欧美一区二区在线| 在线免费观看成人短视频| 麻豆91精品视频| 亚洲卡通欧美制服中文| 精品国产一区二区三区久久久蜜月 | 久久免费电影网| 欧美性做爰猛烈叫床潮| 国产91在线观看丝袜| 午夜激情一区二区| 国产精品国产三级国产三级人妇 | 成人永久aaa| 99久久综合国产精品| 国产成人超碰人人澡人人澡| 亚洲欧美日韩国产综合| 久久夜色精品国产噜噜av|