esp_modem_get_gnss_power_mode (#136)

Co-authored-by: Franz Höpfinger <krone-trailer@franzhoepfinger.de>
This commit is contained in:
diplfranzhoepfinger
2022-10-05 08:54:41 +02:00
committed by GitHub
parent afafcb7c24
commit fe536e476c
3 changed files with 41 additions and 0 deletions

View File

@ -295,6 +295,13 @@ ESP_MODEM_DECLARE_DCE_COMMAND(get_network_system_mode, command_result, 1, INT_OU
*/ \ */ \
ESP_MODEM_DECLARE_DCE_COMMAND(set_gnss_power_mode, command_result, 1, INT_IN(p1, mode)) \ ESP_MODEM_DECLARE_DCE_COMMAND(set_gnss_power_mode, command_result, 1, INT_IN(p1, mode)) \
\ \
/**
* @brief GNSS power control
* @param[out] mode power mode (0 - off, 1 - on)
* @return OK, FAIL or TIMEOUT
*/ \
ESP_MODEM_DECLARE_DCE_COMMAND(get_gnss_power_mode, command_result, 1, INT_OUT(p1, mode)) \
\
#ifdef GENERATE_DOCS #ifdef GENERATE_DOCS

View File

@ -371,6 +371,19 @@ extern "C" esp_err_t esp_modem_set_gnss_power_mode(esp_modem_dce_t *dce_wrap, in
return command_response_to_esp_err(dce_wrap->dce->set_gnss_power_mode(mode)); return command_response_to_esp_err(dce_wrap->dce->set_gnss_power_mode(mode));
} }
extern "C" esp_err_t esp_modem_get_gnss_power_mode(esp_modem_dce_t *dce_wrap, int *p_mode)
{
if (dce_wrap == nullptr || dce_wrap->dce == nullptr) {
return ESP_ERR_INVALID_ARG;
}
int mode;
auto ret = command_response_to_esp_err(dce_wrap->dce->get_gnss_power_mode(mode));
if (ret == ESP_OK) {
*p_mode = mode;
}
return ret;
}
extern "C" esp_err_t esp_modem_reset(esp_modem_dce_t *dce_wrap) extern "C" esp_err_t esp_modem_reset(esp_modem_dce_t *dce_wrap)
{ {
return command_response_to_esp_err(dce_wrap->dce->reset()); return command_response_to_esp_err(dce_wrap->dce->reset());

View File

@ -554,6 +554,27 @@ command_result set_gnss_power_mode(CommandableIf *t, int mode)
return generic_command_common(t, "AT+CGNSPWR=" + std::to_string(mode) + "\r"); return generic_command_common(t, "AT+CGNSPWR=" + std::to_string(mode) + "\r");
} }
command_result get_gnss_power_mode(CommandableIf *t, int &mode)
{
ESP_LOGV(TAG, "%s", __func__ );
std::string_view out;
auto ret = generic_get_string(t, "AT+CGNSPWR?\r", out);
if (ret != command_result::OK) {
return ret;
}
constexpr std::string_view pattern = "+CGNSPWR: ";
constexpr int pos = pattern.size();
if (out.find(pattern) == std::string::npos) {
return command_result::FAIL;
}
if (std::from_chars(out.data() + pos, out.data() + out.size(), mode).ec == std::errc::invalid_argument) {
return command_result::FAIL;
}
return command_result::OK;
}
command_result set_gnss_power_mode_sim76xx(CommandableIf *t, int mode) command_result set_gnss_power_mode_sim76xx(CommandableIf *t, int mode)
{ {
ESP_LOGV(TAG, "%s", __func__ ); ESP_LOGV(TAG, "%s", __func__ );