net_buffer.c

来自「ucos平台下的can网络源代码」· C语言 代码 · 共 106 行

C
106
字号
/*
 * COPYRIGHT (c) Notifier 1993-2004, All Rights Reserved
 *
 * 描述: NIC 通讯信息缓冲区
 *       
 *
 * 版本历史:
 *
 * 版本     作者        日期        修改内容
 * 1.0      阙昊        2006-07-26  建立  
 * 1.01     阙昊        2006-09-01  包含文件名变化
 * 1.02     阙昊        2006-09-13  包含文件目录变化
 *
 */
 
//==============================================================================
// 包含的头文件
//==============================================================================

// 标准库文件
#include <assert.h>

// 系统头文件

#include "system\sys_types.h"

#include "driver\drv_chn_lpc2xxx_can.h"

#include "library\lib_shell.h"
#include "library\lib_log.h"

#include "net_buffer.h" 

//==============================================================================
// 本地宏及类型定义
//==============================================================================
#define MODULE	"NET_BUFFER"

//==============================================================================
// 内部变量定义
//==============================================================================
static NET_BUFFER s_NetBuffer;

//==============================================================================
// 全局变量定义
//==============================================================================
LogDesc g_logDescNetBuffer = 
    {
        MODULE,
        LOG_LEVEL_ALL_ON,
    };

static LogDesc *sg_pLogDesc = &g_logDescNetBuffer;

NET_BUFFER *NB_GetBufferHandler(void)
{
    s_NetBuffer.pMsgTail = &(s_NetBuffer.msgBuf[0]);
    s_NetBuffer.pMsgHead = &(s_NetBuffer.msgBuf[0]);
    s_NetBuffer.pMsgPull = &(s_NetBuffer.msgBuf[0]);
    s_NetBuffer.freeBytes = NIC_CLIENT_COM_BUFFER_SIZE;
    
    return (&s_NetBuffer);
}

INT32U NB_PutMsg
    ( NET_BUFFER *a_pBufHandler,
      INT8U *a_pMsgBuf,
      INT32U a_MsgLen
    )
{
    INT32U msgCnt;
    
    if( a_MsgLen > (a_pBufHandler -> freeBytes) )
    { return 0; }
    
    for( msgCnt = 0; msgCnt < a_MsgLen; ++msgCnt )
    {
        *(a_pBufHandler -> pMsgTail) = *a_pMsgBuf;
        ++(a_pBufHandler -> pMsgTail);
        ++a_pMsgBuf;
        --(a_pBufHandler -> freeBytes);
    }
    return msgCnt;
}

INT32U NB_GetMsg
    ( NET_BUFFER *a_pBufHandler,
      INT8U *a_pMsgBuf,
      INT32U a_MsgLen    
    )
{
    INT32U msgCnt;
    
    if( a_MsgLen > (a_pBufHandler -> freeBytes) )
    { return 0; }
    
    for( msgCnt = 0; msgCnt < a_MsgLen; ++msgCnt )
    {
        *(a_pBufHandler -> pMsgTail) = *a_pMsgBuf;
        ++(a_pBufHandler -> pMsgTail);
        ++a_pMsgBuf;
        --(a_pBufHandler -> freeBytes);
    }
    return msgCnt;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?