zephyr去驱动需要头文件都定义在/zephyr/include/文件夹下,比如PPP驱动的API定义在/zephyr/include/net/ppp.h中
-
需要实现的API
看下面api的结构,只需要实现start、stop、send三个函数,还有一个静态网络接口,如果没有定义宏CONFIG_NET_STATISTICS_PPP,就不需要。struct ppp_api { struct net_if_api iface_api; int (*start)(struct device *dev); int (*stop)(struct device *dev); int (*send)(struct device *dev, struct net_pkt *pkt); }
-
zephyr目前支持的PPP协议
enum ppp_protocol_type {
PPP_IP = 0x0021, /* RFC 1332 */
PPP_IPV6 = 0x0057, /*RFC 5072 */
PPP_IPCP = 0x8021, /*RFC 1332 */
PPP_ECP = 0x8053, /*RFC 1968 */
PPP_IPV6CP = 0x8057, /*RFC 5072 */
PPP_CCP = 0x80FD, /*RFC 1962 */
PPP_LCP = 0xc021, /*RFC 1661 */
};
关于PPP协议可以参考IANA组织的PPP协议簇,网址: https://www.iana.org/assignments/ppp-numbers/ppp-numbers.xhtml -
PPP协议的建立过程
PPP协议的建立过程共有一下几个阶段,PPP_DEAD、PPP_ESTABLISH、PPP_AUTH、PPP_NETWORK、PPP_RUNNING、PPP_TERMINATE
过程如下图: