hal_net_inf.c

来自「基于ARM和uC/OS-II实现的串口控制台」· C语言 代码 · 共 98 行

C
98
字号
/******************************************************************
* File name     : hal_net_inf.c                                   *   
* Description   : Functions to register a net device to the       *
*                 "generic" net device interface                  *
* Others        :                                                 *                                                         *
* Function List :                                                 *
*   1. hal_net_open_dev()                                         *
*   2. hal_net_close_dev()                                        *
*                                                                 *
* History:                                                        * 
*                                                                 *
*   1. Date       : 2006.11.23                                    *
*      Author     : Zhijie Zeng                                   *
*      Version    : 1.0                                           *
*      Description: Created                                       *
******************************************************************/

#include "../../inc/pub/hal_errno.h"
#include "../../inc/pub/hal_llist.h"
#include "../../inc/dev/hal_file.h"
#include "../../inc/dev/hal_net_dev.h"
//#include "hal_file.h"

/* 创建一个hal_net_dev_llist链表的头结点(定义一个头结点全局变量),
 *头结点中的指针被初始化为指向头结点本身 */
HAL_LLIST_HEAD(hal_net_dev_list);

hal_net_fd* hal_net_dev_open(const char* name)
{
    hal_net_dev* dev = (hal_net_dev*)hal_find_dev(name, &hal_net_dev_list);
    
    if ((dev) && dev->open)
    {
        return dev->open(dev, name);
    }
    
    return dev;
}

void hal_net_dev_close(hal_net_fd* fd)
{
    if (fd && fd->close)
    {
        fd->close(fd);
    }
    return;
}

int hal_net_dev_rcvfunc_reg(hal_net_fd* fd, void* rcvfunc)
{
    if (fd)
    {
        fd->rcv_pkg = (hal_net_rcv)rcvfunc;
        return 0;    
    }else
    {
        return -1;    
    }    
}

int hal_net_set_mac_addr(hal_net_fd *fd, const hal_u8* mac_addr)
{
    eth_dev_spec* eth;
    eth = (eth_dev_spec*)fd->dev_spec;
    if (fd && eth->set_mac_addr) 
    {
        return eth->set_mac_addr(fd, mac_addr);
    }else
    {
        return -1;    
    }
}

int hal_net_set_dlci(hal_net_fd *fd, const hal_u16* dlci)
{
    fr_dev_spec* fr_dev;
    fr_dev = (fr_dev_spec*)fd->dev_spec;
    if (fd && fr_dev->set_dlci)
    {
        return fr_dev->set_dlci(fd, dlci);    
    }else
    {
        return -1;    
    }
}

int hal_net_send_pkg(hal_net_fd *fd, mbuf *p)
{
    if (fd && fd->send_pkg)
    {
        return fd->send_pkg(fd, p);    
    }else
    {
        return -1;
    }
}

⌨️ 快捷键说明

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