LwIP 之二 网络接口 netif(netif.c、ethernetif( 六 )


裸机示例
示例代码并不固定 , 自己想咋实现都可以!
.h
/********************************************************************************* @fileethernetif.h* @authorZCShou* @version 1.0.0* @date2020.10.6* @briefThis file provides initialization code for LWIP middleWare.******************************************************************************* @attention* * © COPYRIGHT 2022 ZCShou **(1) **(2) **(3) ********************************************************************************/#ifndef __ETHERNETIF_H__#define __ETHERNETIF_H__#ifdef __cplusplusextern "C" {#endif/* Includes ------------------------------------------------------------------*/#include "lwip/err.h"#include "lwip/netif.h"/* Exported defines ----------------------------------------------------------*//* Exported types ------------------------------------------------------------*//* Exported variables ------------------------------------------------------- *//* Exported macro ----------------------------------------------------------- *//* Exported functions ------------------------------------------------------- */err_t ethernetif_init(struct netif *netif);uint8_t ethernetif_link_check(struct netif *netif);#if LWIP_NETIF_LINK_CALLBACKvoid ethernetif_link_config(struct netif *netif);#endifvoid ethernetif_input(struct netif *netif);#ifdef __cplusplus}#endif#endif/************************ (C) COPYRIGHT ZCShou ***********END OF FILE**********/
.c
如上 .h 中接口 , 与带系统时仅仅部分接口返回值及入参变化 , 在实现中 , 取消所有系统相关的代码 , 改为轮询方式即可 , 这里就不再贴源码了 。
.c
和 .c 很相似 , SLIP 即串行链路 IP , 它提供了一种在串行链路上传送 IP 数据包的函数定义 。SLIP 协议比较简单 , 它只是定义了一系列的字符 , 以实现对链路上的IP数据包封装和发送 , 除此之外 , 它不提供任何寻址、错误检测、包类型识别机制 , 因此相关驱动程序的实现也比较简单 。
它需要一个 sio(串行I / O)模块才能工作 。移植者需要根据自己使用的串行线路特性(如串口)来实现以下这些函数 , 部分默认的函数原型如下:
这些函数的默认的原型在 sio.h 中有声明 , 我们只需要在自己的文件中实现定义即可 。当然 , 如果需要自定义这些函数的原型 , 则需要在 cc.h 中声明这些原型(sio.h 会优先检查有没有定义这些接口 , 没有时才会启用默认) , 然后在自己的文件中实现定义 。
参考 官方文档