IOT ETH 以太网
iot_eth 提供了一整套 4G 模组连接以太网的解决方案,提供底层硬件的抽象层,默认提供基于 LWIP 的网络接口。也支持用户自定义网络接口。
特性
高级工厂模式,支持底层多种连接方式
默认支持 LWIP 网络接口, 也支持用户自定义网络接口
用户指南
先初始化 driver 层,提供下层硬件抽象
iot_usbh_rndis_config_t rndis_cfg = {
.auto_detect = true, // auto detect 4G module
.auto_detect_timeout = pdMS_TO_TICKS(1000), // auto detect timeout
};
iot_eth_driver_t *rndis_handle = NULL;
esp_err_t ret = iot_eth_new_usb_rndis(&rndis_cfg, &rndis_handle);
if (ret != ESP_OK || rndis_handle == NULL) {
ESP_LOGE(TAG, "Failed to create USB RNDIS driver");
return;
}
初始化 iot_eth 层
iot_eth_config_t eth_cfg = {
.driver = rndis_handle,
.stack_input = NULL,
.user_data = NULL,
};
iot_eth_handle_t eth_handle = NULL;
ret = iot_eth_install(ð_cfg, ð_handle);
if (ret != ESP_OK) {
ESP_LOGE(TAG, "Failed to install USB RNDIS driver");
return;
}
启动 iot_eth 层
ret = iot_eth_start(eth_handle);
if (ret != ESP_OK) {
ESP_LOGE(TAG, "Failed to start USB RNDIS driver");
return;
}
使用其他网络接口
发送: 请调用 iot_eth_transmit 发送数据。
接受: 请配置 iot_eth_config_t 中的 stack_input 回调函数,当有数据接收时,会调用该回调函数。
获取 4G 模块的 MAC 地址: 请调用 iot_eth_get_addr 获取 4G 模块的 MAC 地址。
已支持的网络接口
基于 USB 接口的 RNDIS USB RNDIS 主机驱动
基于 USB 接口的 PPP USB PPP
基于 USB 接口的 ECM USB ECM 主机驱动
API 参考
Header File
Functions
-
esp_err_t iot_eth_install(iot_eth_config_t *config, iot_eth_handle_t *handle)
-
esp_err_t iot_eth_uninstall(iot_eth_handle_t handle)
-
esp_err_t iot_eth_start(iot_eth_handle_t handle)
-
esp_err_t iot_eth_stop(iot_eth_handle_t handle)
-
esp_err_t iot_eth_transmit(iot_eth_handle_t handle, void *data, size_t len)
-
esp_err_t iot_eth_get_addr(iot_eth_handle_t handle, uint8_t *mac)
-
esp_err_t iot_eth_update_input_path(iot_eth_handle_t handle, static_input_cb_t stack_input, void *user_data)
Structures
-
struct iot_eth_config_t
Ethernet configuration structure.
This structure holds the configuration for initializing an Ethernet instance.
Public Members
-
iot_eth_driver_t *driver
Pointer to the Ethernet driver
-
static_input_cb_t stack_input
Function pointer for stack input
-
void *user_data
User data for callbacks
-
iot_eth_driver_t *driver
Type Definitions
-
typedef void *iot_eth_handle_t
iot_eth event base declaration
Ethernet handle type
This is a handle to an Ethernet instance, used for managing Ethernet operations.
-
typedef esp_err_t (*static_input_cb_t)(iot_eth_handle_t handle, uint8_t *data, size_t len, void *user_data)
Static input callback function type.
This type defines a function pointer for a static input callback. It takes an Ethernet handle, a pointer to data, the length of the data, and a user data pointer as arguments.