mirror of
https://github.com/espressif/esp-protocols.git
synced 2025-09-25 22:30:55 +02:00
feat(modem): Support esp-modem use without PPP
Closes https://github.com/espressif/esp-protocols/issues/851
This commit is contained in:
@@ -103,4 +103,14 @@ menu "esp-modem"
|
|||||||
Set this to 'y' if you're making changes to the actual sources of
|
Set this to 'y' if you're making changes to the actual sources of
|
||||||
the AT command definitions (typically in esp_modem_command_declare.inc)
|
the AT command definitions (typically in esp_modem_command_declare.inc)
|
||||||
|
|
||||||
|
config ESP_MODEM_USE_PPP_MODE
|
||||||
|
bool "Use PPP mode"
|
||||||
|
default y
|
||||||
|
select LWIP_PPP_SUPPORT
|
||||||
|
help
|
||||||
|
If enabled, the library can use PPP netif from lwip.
|
||||||
|
This is the default and most common setting.
|
||||||
|
But it's possible to disable it and use only AT commands,
|
||||||
|
in this case it's not required to enable LWIP_PPP_SUPPORT.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
@@ -62,12 +62,16 @@ class Creator {
|
|||||||
public:
|
public:
|
||||||
Creator(std::shared_ptr<DTE> dte, esp_netif_t *esp_netif): dte(std::move(dte)), device(nullptr), netif(esp_netif)
|
Creator(std::shared_ptr<DTE> dte, esp_netif_t *esp_netif): dte(std::move(dte)), device(nullptr), netif(esp_netif)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_ESP_MODEM_USE_PPP_MODE
|
||||||
ESP_MODEM_THROW_IF_FALSE(netif != nullptr, "Null netif");
|
ESP_MODEM_THROW_IF_FALSE(netif != nullptr, "Null netif");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Creator(std::shared_ptr<DTE> dte, esp_netif_t *esp_netif, std::shared_ptr<T_Module> dev): dte(std::move(dte)), device(std::move(dev)), netif(esp_netif)
|
Creator(std::shared_ptr<DTE> dte, esp_netif_t *esp_netif, std::shared_ptr<T_Module> dev): dte(std::move(dte)), device(std::move(dev)), netif(esp_netif)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_ESP_MODEM_USE_PPP_MODE
|
||||||
ESP_MODEM_THROW_IF_FALSE(netif != nullptr, "Null netif");
|
ESP_MODEM_THROW_IF_FALSE(netif != nullptr, "Null netif");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
explicit Creator(std::shared_ptr<DTE> dte): dte(std::move(dte)), device(nullptr), netif(nullptr)
|
explicit Creator(std::shared_ptr<DTE> dte): dte(std::move(dte)), device(nullptr), netif(nullptr)
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -14,7 +14,6 @@
|
|||||||
#include "cxx_include/esp_modem_dte.hpp"
|
#include "cxx_include/esp_modem_dte.hpp"
|
||||||
#include "esp_netif_ppp.h"
|
#include "esp_netif_ppp.h"
|
||||||
|
|
||||||
|
|
||||||
namespace esp_modem {
|
namespace esp_modem {
|
||||||
|
|
||||||
void Netif::on_ppp_changed(void *arg, esp_event_base_t event_base,
|
void Netif::on_ppp_changed(void *arg, esp_event_base_t event_base,
|
||||||
@@ -39,6 +38,7 @@ esp_err_t Netif::esp_modem_dte_transmit(void *h, void *buffer, size_t len)
|
|||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_ESP_MODEM_USE_PPP_MODE
|
||||||
esp_err_t Netif::esp_modem_post_attach(esp_netif_t *esp_netif, void *args)
|
esp_err_t Netif::esp_modem_post_attach(esp_netif_t *esp_netif, void *args)
|
||||||
{
|
{
|
||||||
auto d = (ppp_netif_driver *) args;
|
auto d = (ppp_netif_driver *) args;
|
||||||
@@ -62,6 +62,7 @@ esp_err_t Netif::esp_modem_post_attach(esp_netif_t *esp_netif, void *args)
|
|||||||
|
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
#endif // CONFIG_ESP_MODEM_USE_PPP_MODE
|
||||||
|
|
||||||
void Netif::receive(uint8_t *data, size_t len)
|
void Netif::receive(uint8_t *data, size_t len)
|
||||||
{
|
{
|
||||||
@@ -73,12 +74,16 @@ Netif::Netif(std::shared_ptr<DTE> e, esp_netif_t *ppp_netif) :
|
|||||||
{
|
{
|
||||||
driver.base.netif = ppp_netif;
|
driver.base.netif = ppp_netif;
|
||||||
driver.ppp = this;
|
driver.ppp = this;
|
||||||
|
#ifdef CONFIG_ESP_MODEM_USE_PPP_MODE
|
||||||
driver.base.post_attach = esp_modem_post_attach;
|
driver.base.post_attach = esp_modem_post_attach;
|
||||||
ESP_MODEM_THROW_IF_ERROR(esp_event_handler_register(NETIF_PPP_STATUS, ESP_EVENT_ANY_ID, &on_ppp_changed, (void *) this));
|
ESP_MODEM_THROW_IF_ERROR(esp_event_handler_register(NETIF_PPP_STATUS, ESP_EVENT_ANY_ID, &on_ppp_changed, (void *) this));
|
||||||
|
#endif
|
||||||
ESP_MODEM_THROW_IF_ERROR(esp_event_handler_register(IP_EVENT, IP_EVENT_PPP_GOT_IP, esp_netif_action_connected, ppp_netif));
|
ESP_MODEM_THROW_IF_ERROR(esp_event_handler_register(IP_EVENT, IP_EVENT_PPP_GOT_IP, esp_netif_action_connected, ppp_netif));
|
||||||
ESP_MODEM_THROW_IF_ERROR(
|
ESP_MODEM_THROW_IF_ERROR(
|
||||||
esp_event_handler_register(IP_EVENT, IP_EVENT_PPP_LOST_IP, esp_netif_action_disconnected, ppp_netif));
|
esp_event_handler_register(IP_EVENT, IP_EVENT_PPP_LOST_IP, esp_netif_action_disconnected, ppp_netif));
|
||||||
|
#ifdef CONFIG_ESP_MODEM_USE_PPP_MODE
|
||||||
ESP_MODEM_THROW_IF_ERROR(esp_netif_attach(ppp_netif, &driver));
|
ESP_MODEM_THROW_IF_ERROR(esp_netif_attach(ppp_netif, &driver));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Netif::start()
|
void Netif::start()
|
||||||
@@ -120,7 +125,9 @@ Netif::~Netif()
|
|||||||
signal.clear(PPP_STARTED);
|
signal.clear(PPP_STARTED);
|
||||||
signal.wait(PPP_EXIT, 30000);
|
signal.wait(PPP_EXIT, 30000);
|
||||||
}
|
}
|
||||||
|
#ifdef CONFIG_ESP_MODEM_USE_PPP_MODE
|
||||||
esp_event_handler_unregister(NETIF_PPP_STATUS, ESP_EVENT_ANY_ID, &on_ppp_changed);
|
esp_event_handler_unregister(NETIF_PPP_STATUS, ESP_EVENT_ANY_ID, &on_ppp_changed);
|
||||||
|
#endif
|
||||||
esp_event_handler_unregister(IP_EVENT, IP_EVENT_PPP_GOT_IP, esp_netif_action_connected);
|
esp_event_handler_unregister(IP_EVENT, IP_EVENT_PPP_GOT_IP, esp_netif_action_connected);
|
||||||
esp_event_handler_unregister(IP_EVENT, IP_EVENT_PPP_LOST_IP, esp_netif_action_disconnected);
|
esp_event_handler_unregister(IP_EVENT, IP_EVENT_PPP_LOST_IP, esp_netif_action_disconnected);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user