Skip to content

Commit 1a53bd3

Browse files
committed
Merge branch 'bugfix/pppos_client_7600_powerdown' into 'master'
esp_modem: Add specific power-down command for SIM7600 See merge request espressif/esp-idf!12478
2 parents 00432fa + 3748b4a commit 1a53bd3

File tree

1 file changed

+37
-0
lines changed
  • examples/protocols/pppos_client/components/modem/src

1 file changed

+37
-0
lines changed

examples/protocols/pppos_client/components/modem/src/sim7600.c

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,22 @@ static esp_err_t sim7600_handle_cbc(modem_dce_t *dce, const char *line)
5252
return err;
5353
}
5454

55+
/**
56+
* @brief Handle response from AT+CPOF
57+
*/
58+
static esp_err_t sim7600_handle_cpof(modem_dce_t *dce, const char *line)
59+
{
60+
esp_err_t err = ESP_OK;
61+
if (strstr(line, MODEM_RESULT_CODE_SUCCESS)) {
62+
err = esp_modem_process_command_done(dce, MODEM_STATE_SUCCESS);
63+
} else if (strstr(line, MODEM_RESULT_CODE_NO_CARRIER)) {
64+
err = ESP_OK;
65+
} else if (strstr(line, MODEM_RESULT_CODE_ERROR)) {
66+
err = esp_modem_process_command_done(dce, MODEM_STATE_FAIL);
67+
}
68+
return err;
69+
}
70+
5571
/**
5672
* @brief Get battery status
5773
*
@@ -78,6 +94,26 @@ static esp_err_t sim7600_get_battery_status(modem_dce_t *dce, uint32_t *bcs, uin
7894
return ESP_FAIL;
7995
}
8096

97+
/**
98+
* @brief Set the SIM7600 device to power down mode
99+
*
100+
* @param dce common modem dce object (modem_dce_t)
101+
* @return esp_err_t
102+
* - ESP_OK on success
103+
* - ESP_FAIL on error
104+
*/
105+
static esp_err_t sim7600_power_down(modem_dce_t *dce)
106+
{
107+
modem_dte_t *dte = dce->dte;
108+
dce->handle_line = sim7600_handle_cpof;
109+
DCE_CHECK(dte->send_cmd(dte, "AT+CPOF\r", MODEM_COMMAND_TIMEOUT_POWEROFF) == ESP_OK, "send command failed", err);
110+
DCE_CHECK(dce->state == MODEM_STATE_SUCCESS, "power down failed", err);
111+
ESP_LOGD(DCE_TAG, "power down ok");
112+
return ESP_OK;
113+
err:
114+
return ESP_FAIL;
115+
}
116+
81117
/**
82118
* @brief Create and initialize SIM7600 object
83119
*
@@ -86,5 +122,6 @@ modem_dce_t *sim7600_init(modem_dte_t *dte)
86122
{
87123
modem_dce_t *dce = bg96_init(dte);
88124
dte->dce->get_battery_status = sim7600_get_battery_status;
125+
dte->dce->power_down = sim7600_power_down;
89126
return dce;
90127
}

0 commit comments

Comments
 (0)