From ce7daddc779d3e9a44565b35f1a1844a77386073 Mon Sep 17 00:00:00 2001 From: David Cermak Date: Wed, 17 Jan 2024 12:50:32 +0100 Subject: [PATCH] fix(modem): Added C-API to configure APN Closes https://github.com/espressif/esp-protocols/issues/485 --- .../esp_modem/include/esp_modem_c_api_types.h | 21 ++++++++++++++++++- components/esp_modem/src/esp_modem_c_api.cpp | 7 +++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/components/esp_modem/include/esp_modem_c_api_types.h b/components/esp_modem/include/esp_modem_c_api_types.h index fcc54701c..2c74819ab 100644 --- a/components/esp_modem/include/esp_modem_c_api_types.h +++ b/components/esp_modem/include/esp_modem_c_api_types.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -119,8 +119,27 @@ esp_err_t esp_modem_set_error_cb(esp_modem_dce_t *dce, esp_modem_terminal_error_ */ esp_err_t esp_modem_set_mode(esp_modem_dce_t *dce, esp_modem_dce_mode_t mode); +/** + * @brief Convenient function to run arbitrary commands from C-API + * + * @param dce Modem DCE handle + * @param command Command to send + * @param got_line_cb Callback function which is called whenever we receive a line + * @param timeout_ms Command timeout + * @return ESP_OK on success, ESP_FAIL on failure + */ + esp_err_t esp_modem_command(esp_modem_dce_t *dce, const char *command, esp_err_t(*got_line_cb)(uint8_t *data, size_t len), uint32_t timeout_ms); +/** + * @brief Sets the APN and configures it into the modem's PDP context + * + * @param dce Modem DCE handle + * @param apn Access Point Name + * @return ESP_OK on success + */ +esp_err_t esp_modem_set_apn(esp_modem_dce_t *dce, const char *apn); + /** * @} */ diff --git a/components/esp_modem/src/esp_modem_c_api.cpp b/components/esp_modem/src/esp_modem_c_api.cpp index 6c32cf8c6..033e6f72a 100644 --- a/components/esp_modem/src/esp_modem_c_api.cpp +++ b/components/esp_modem/src/esp_modem_c_api.cpp @@ -448,3 +448,10 @@ extern "C" esp_err_t esp_modem_set_baud(esp_modem_dce_t *dce_wrap, int baud) { return command_response_to_esp_err(dce_wrap->dce->set_baud(baud)); } + +extern "C" esp_err_t esp_modem_set_apn(esp_modem_dce_t *dce_wrap, const char *apn) +{ + auto new_pdp = std::unique_ptr(new PdpContext(apn)); + dce_wrap->dce->get_module()->configure_pdp_context(std::move(new_pdp)); + return ESP_OK; +}