⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hal_net_dev.h

📁 基于ARM和uC/OS-II实现的串口控制台
💻 H
字号:


#ifndef __HAL_NET_DEV_H__

#define __HAL_NET_DEV_H__

#include "../pub/hal_llist.h"
#include "hal_dev_llist.h"

#include "../pub/hal_types.h"


extern hal_llist hal_net_dev_list;

typedef struct __hal_net_dev   hal_net_dev;
typedef hal_net_dev hal_net_fd;          
typedef hal_net_dev* (*hal_net_open)( hal_net_dev* net_dev, const char* name );
typedef int (*hal_net_close)( hal_net_dev* net_dev);
typedef int (*hal_net_send)( hal_net_dev* net_dev, mbuf* pkg);
typedef int (*hal_net_rcv)( hal_net_dev* net_dev,  mbuf* pkg);
typedef int (*hal_set_mac_addr)( hal_net_dev* net_dev, const hal_u8* mac_addr);
typedef int (*hal_set_dlci)( hal_net_dev* net_dev, const hal_u16* dlci);

/* 网络设备结构,描述了网络类设备的公有特性及操作方法 */
typedef struct __hal_net_dev   
{
    hal_llist               llist;
    const char*             name;  
    void*                   base_addr; /* address pointer */
    hal_net_open            open;   /* function pointer  */
    hal_net_close           close;  /* function pointer */
    hal_net_send            send_pkg; /* function pointer */
    hal_net_rcv             rcv_pkg; /* function pointer */
    void*                   dev_spec;   /* struct variable pointer */
    
} hal_net_dev;
         
/* 以太网器件私有的结构,与hal_net_dev结构一起描述一个以太网器件 */
typedef struct __eth_dev_spec  
{
    hal_set_mac_addr        set_mac_addr;     /* 设置链路层地址 */
    hal_u8                  mac_addr[6];      /*链路层地址 */	    
} eth_dev_spec;


/* 帧中v继端口设备私有结构,与hal_net_dev结构一起描述一个以太网器件 */
typedef struct __fr_dev_spec   
{
    hal_set_dlci            set_dlci;         
    hal_u16                 dlci[10];        /* 预置的10个dlci,在上层不指定DLCI的时候,随机使用 */
    hal_u8                  port;
    
} fr_dev_spec;

static int hal_net_dev_reg( hal_net_fd* fd)
{
    
    return hal_dev_llist_insert ((hal_dev_llist*) fd, &hal_net_dev_list);
}

///* 用于定义一个新的帧中继类型网络设备结构变量的宏 *
// * 使用本宏定义一个设备变量的好处是可以自动初始化 *
// * 设备结构变量中相关的内容                       *
// */
//#define NEW_FR_DEV(dev_name, set_dlci_func,     /
//                   used_port, open_func,        /
//                   send_func                    /
//                   )                            /
//    hal_fr_dev_spec    dev_name##_spec =        /
//    {                                          /
//        set_dlci_func,                         /
//        {0,1,2,3,4,5,6,7,8,9},                 /
//        used_port                              /
//    };                                         /
//                               /
//    hal_net_dev    dev_name =      /
//    {                          /
//        { NULL, NULL },        /
//		dev_name##_NAME,       /
//        dev_name##_BASE,      /  
//        open_func,             /  
//        close_func,            / 
//        send_func              /  
//        NULL,                  /  
//        &dev_name##_spec      /
//
//    };
//
///* 用于定义一个新的以太网类型网络设备结构变量的宏 *
// * 使用本宏定义一个设备变量的好处是可以自动初始化 *
// * 设备结构变量中相关的内容                       *
// */    
//#define NEW_ETH_DEV(dev_name, set_mac_addr_func, /
//                   used_port, open_func,        /
//                   send_func                    /
//                   )                            /
//    hal_fr_dev_spec    dev_name##_spec =        /
//    {                                           /
//        set_mac_addr_func                       /
//    };                                          /
//                               /
//    hal_net_dev    dev_name =      /
//    {                          /
//        { NULL, NULL },        /
//        dev_name##_NAME,      /   /* name of the deviec */
//        dev_name##_BASE,       /   /* base address of the device */
//        (hal_net_open)open_func,             /   /* hal_net_open()  */
//        close_func,            /   /* hal_net_close() */
//        send_func              /   /* hal_net_send()  */
//        NULL,             /   /* hal_net_rcv()   */
//        &dev_name##_spec       /
//    };
    
    
#endif /* __HAL_NET_DEV_H__ */

⌨️ 快捷键说明

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