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 9b454f155..17f39444b 100644 --- a/components/esp_modem/include/esp_modem_c_api_types.h +++ b/components/esp_modem/include/esp_modem_c_api_types.h @@ -163,6 +163,8 @@ esp_err_t esp_modem_set_apn(esp_modem_dce_t *dce, const char *apn); esp_err_t esp_modem_set_urc(esp_modem_dce_t *dce, esp_err_t(*got_line_cb)(uint8_t *data, size_t len)); #endif +esp_err_t esp_modem_sqns_gm02s_connect(esp_modem_dce_t *dce, const esp_modem_PdpContext_t *pdp_context); + /** * @brief This API provides support for temporarily pausing networking in order * to send/receive AT commands and resume networking afterwards. diff --git a/components/esp_modem/src/esp_modem_c_api.cpp b/components/esp_modem/src/esp_modem_c_api.cpp index 1d4d5ac3b..b763b38c5 100644 --- a/components/esp_modem/src/esp_modem_c_api.cpp +++ b/components/esp_modem/src/esp_modem_c_api.cpp @@ -459,21 +459,19 @@ extern "C" esp_err_t esp_modem_config_network_registration_urc(esp_modem_dce_t * return ESP_ERR_INVALID_ARG; } - return command_response_to_esp_err(dce_wrap->dce->configure_network_registration_urc(value)); + return command_response_to_esp_err(dce_wrap->dce->config_network_registration_urc(value)); } extern "C" esp_err_t esp_modem_get_network_registration_state(esp_modem_dce_t *dce_wrap, int *p_state) { - if (dce_wrap == nullptr || dce_wrap->dce == nullptr || p_state == nullptr) - { + if (dce_wrap == nullptr || dce_wrap->dce == nullptr || p_state == nullptr) { return ESP_ERR_INVALID_ARG; } int state; auto ret = command_response_to_esp_err(dce_wrap->dce->get_network_registration_state(state)); - if (ret == ESP_OK) - { + if (ret == ESP_OK) { *p_state = state; } return ret; @@ -481,22 +479,29 @@ extern "C" esp_err_t esp_modem_get_network_registration_state(esp_modem_dce_t *d extern "C" esp_err_t esp_modem_config_mobile_termination_error(esp_modem_dce_t *dce_wrap, int mode) { - if (dce_wrap == nullptr || dce_wrap->dce == nullptr || mode > 2) - { + if (dce_wrap == nullptr || dce_wrap->dce == nullptr || mode > 2) { return ESP_ERR_INVALID_ARG; } return command_response_to_esp_err(dce_wrap->dce->config_mobile_termination_error(mode)); } -extern "C" esp_err_t esp_modem_config_edrx(esp_modem_dce_t *dce, int value, const char *access_technology) +extern "C" esp_err_t esp_modem_config_edrx(esp_modem_dce_t *dce, int mode, int access_technology, const char *edrx_value, const char *ptw_value) { + if (dce_wrap == nullptr || dce_wrap->dce == nullptr || mode > 3 || access_technology > 5) { + return ESP_ERR_INVALID_ARG; + } + if ((mode == 1 || mode == 2 ) && (strlen(edrx_value) != 4 || strlen(ptw_value) != 4)) { + return ESP_ERR_INVALID_ARG; + } + + return command_response_to_esp_err(dce_wrap->dce->config_edrx(mode,access_technology,std::string(edrx_value),std::string(ptw_value))); } -extern "C" esp_err_t esp_modem_sqns_gm02s_connect(esp_modem_dce_t *dce, const esp_modem_PdpContext_t *pdp_context) +extern "C" esp_err_t esp_modem_sqns_gm02s_connect(esp_modem_dce_t *dce_wrap, const esp_modem_PdpContext_t *pdp_context) { - if (dce_wrap == nullptr || dce_wrap->dce == nullptr || dce_wrap->modem_type != ESP_MODEM_DCE_SQNGM02S) + if (dce_wrap == nullptr || dce_wrap->dce == nullptr) { return ESP_ERR_INVALID_ARG; }