Skip to content

Commit 9b2b1f6

Browse files
committed
fix(modem): Replace MQTT client with simple ping command
1 parent 370dfec commit 9b2b1f6

File tree

3 files changed

+24
-68
lines changed

3 files changed

+24
-68
lines changed

components/esp_modem/examples/pppos_client/main/idf_component.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,5 @@ dependencies:
1010
rules:
1111
- if: idf_version >=4.4
1212
- if: target in [esp32s2, esp32s3, esp32p4]
13-
espressif/mqtt:
14-
rules:
15-
- if: idf_version >=6.0
16-
version: ^1.0.0
13+
console_cmd_ping:
14+
version: '*'

components/esp_modem/examples/pppos_client/main/pppos_client_main.c

Lines changed: 19 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Unlicense OR CC0-1.0
55
*/
@@ -16,8 +16,10 @@
1616
#include "freertos/event_groups.h"
1717
#include "esp_netif.h"
1818
#include "esp_netif_ppp.h"
19-
#include "mqtt_client.h"
2019
#include "esp_modem_api.h"
20+
#include "esp_console.h"
21+
#include "console_ping.h"
22+
#include "esp_event.h"
2123
#include "esp_log.h"
2224
#include "sdkconfig.h"
2325

@@ -35,7 +37,6 @@ static const char *TAG = "pppos_example";
3537
static EventGroupHandle_t event_group = NULL;
3638
static const int CONNECT_BIT = BIT0;
3739
static const int DISCONNECT_BIT = BIT1;
38-
static const int GOT_DATA_BIT = BIT2;
3940
static const int USB_DISCONNECTED_BIT = BIT3; // Used only with USB DTE but we define it unconditionally, to avoid too many #ifdefs in the code
4041

4142
#ifdef CONFIG_EXAMPLE_MODEM_DEVICE_CUSTOM
@@ -64,47 +65,6 @@ if ((xEventGroupGetBits(event_group) & USB_DISCONNECTED_BIT) == USB_DISCONNECTED
6465
#define CHECK_USB_DISCONNECTION(event_group)
6566
#endif
6667

67-
static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data)
68-
{
69-
ESP_LOGD(TAG, "Event dispatched from event loop base=%s, event_id=%" PRIu32, base, event_id);
70-
esp_mqtt_event_handle_t event = event_data;
71-
esp_mqtt_client_handle_t client = event->client;
72-
int msg_id;
73-
switch ((esp_mqtt_event_id_t)event_id) {
74-
case MQTT_EVENT_CONNECTED:
75-
ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED");
76-
msg_id = esp_mqtt_client_subscribe(client, CONFIG_EXAMPLE_MQTT_TEST_TOPIC, 0);
77-
ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id);
78-
break;
79-
case MQTT_EVENT_DISCONNECTED:
80-
ESP_LOGI(TAG, "MQTT_EVENT_DISCONNECTED");
81-
break;
82-
case MQTT_EVENT_SUBSCRIBED:
83-
ESP_LOGI(TAG, "MQTT_EVENT_SUBSCRIBED, msg_id=%d", event->msg_id);
84-
msg_id = esp_mqtt_client_publish(client, CONFIG_EXAMPLE_MQTT_TEST_TOPIC, CONFIG_EXAMPLE_MQTT_TEST_DATA, 0, 0, 0);
85-
ESP_LOGI(TAG, "sent publish successful, msg_id=%d", msg_id);
86-
break;
87-
case MQTT_EVENT_UNSUBSCRIBED:
88-
ESP_LOGI(TAG, "MQTT_EVENT_UNSUBSCRIBED, msg_id=%d", event->msg_id);
89-
break;
90-
case MQTT_EVENT_PUBLISHED:
91-
ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d", event->msg_id);
92-
break;
93-
case MQTT_EVENT_DATA:
94-
ESP_LOGI(TAG, "MQTT_EVENT_DATA");
95-
printf("TOPIC=%.*s\r\n", event->topic_len, event->topic);
96-
printf("DATA=%.*s\r\n", event->data_len, event->data);
97-
xEventGroupSetBits(event_group, GOT_DATA_BIT);
98-
break;
99-
case MQTT_EVENT_ERROR:
100-
ESP_LOGI(TAG, "MQTT_EVENT_ERROR");
101-
break;
102-
default:
103-
ESP_LOGI(TAG, "MQTT other event id: %d", event->event_id);
104-
break;
105-
}
106-
}
107-
10868
static void on_ppp_changed(void *arg, esp_event_base_t event_base,
10969
int32_t event_id, void *event_data)
11070
{
@@ -160,6 +120,11 @@ void app_main(void)
160120
ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, ESP_EVENT_ANY_ID, &on_ip_event, NULL));
161121
ESP_ERROR_CHECK(esp_event_handler_register(NETIF_PPP_STATUS, ESP_EVENT_ANY_ID, &on_ppp_changed, NULL));
162122

123+
// Initialize console REPL, register ping and start it
124+
ESP_ERROR_CHECK(console_cmd_init());
125+
ESP_ERROR_CHECK(console_cmd_ping_register());
126+
ESP_ERROR_CHECK(console_cmd_start());
127+
163128
/* Configure the PPP netif */
164129
esp_err_t err;
165130
esp_modem_dce_config_t dce_config = ESP_MODEM_DCE_DEFAULT_CONFIG(CONFIG_EXAMPLE_MODEM_PPP_APN);
@@ -251,7 +216,7 @@ void app_main(void)
251216
#endif
252217

253218
#if CONFIG_EXAMPLE_DETECT_MODE_BEFORE_CONNECT
254-
xEventGroupClearBits(event_group, CONNECT_BIT | GOT_DATA_BIT | USB_DISCONNECTED_BIT | DISCONNECT_BIT);
219+
xEventGroupClearBits(event_group, CONNECT_BIT | USB_DISCONNECTED_BIT | DISCONNECT_BIT);
255220

256221
err = esp_modem_set_mode(dce, ESP_MODEM_MODE_DETECT);
257222
if (err != ESP_OK) {
@@ -270,7 +235,7 @@ void app_main(void)
270235
}
271236
#endif // CONFIG_EXAMPLE_DETECT_MODE_BEFORE_CONNECT
272237

273-
xEventGroupClearBits(event_group, CONNECT_BIT | GOT_DATA_BIT | USB_DISCONNECTED_BIT | DISCONNECT_BIT);
238+
xEventGroupClearBits(event_group, CONNECT_BIT | USB_DISCONNECTED_BIT | DISCONNECT_BIT);
274239

275240
/* Run the modem demo app */
276241
#if CONFIG_EXAMPLE_NEED_SIM_PIN == 1
@@ -340,15 +305,11 @@ void app_main(void)
340305
}
341306

342307
/* Config MQTT */
343-
esp_mqtt_client_config_t mqtt_config = {
344-
.broker.address.uri = CONFIG_EXAMPLE_MQTT_BROKER_URI,
345-
};
346-
esp_mqtt_client_handle_t mqtt_client = esp_mqtt_client_init(&mqtt_config);
347-
esp_mqtt_client_register_event(mqtt_client, ESP_EVENT_ANY_ID, mqtt_event_handler, NULL);
348-
esp_mqtt_client_start(mqtt_client);
308+
int ping_ret_val;
309+
ESP_ERROR_CHECK(esp_console_run("ping www.espressif.com", &ping_ret_val));
310+
ESP_LOGI(TAG, "Ping command finished with return value: %d", ping_ret_val);
349311

350312
#if CONFIG_EXAMPLE_PAUSE_NETIF_TO_CHECK_SIGNAL
351-
xEventGroupWaitBits(event_group, GOT_DATA_BIT, pdTRUE, pdFALSE, portMAX_DELAY);
352313
esp_modem_pause_net(dce, true);
353314
err = esp_modem_get_signal_quality(dce, &rssi, &ber);
354315
if (err != ESP_OK) {
@@ -357,14 +318,15 @@ void app_main(void)
357318
}
358319
ESP_LOGI(TAG, "Signal quality: rssi=%d, ber=%d", rssi, ber);
359320
esp_modem_pause_net(dce, false);
360-
esp_mqtt_client_publish(mqtt_client, CONFIG_EXAMPLE_MQTT_TEST_TOPIC, CONFIG_EXAMPLE_MQTT_TEST_DATA, 0, 0, 0);
321+
ESP_ERROR_CHECK(esp_console_run("ping www.espressif.com", &ping_ret_val));
322+
ESP_LOGI(TAG, "Ping command finished with return value: %d", ping_ret_val);
361323
#endif // CONFIG_EXAMPLE_PAUSE_NETIF_TO_CHECK_SIGNAL
362324

363-
ESP_LOGI(TAG, "Waiting for MQTT data");
364-
xEventGroupWaitBits(event_group, GOT_DATA_BIT | USB_DISCONNECTED_BIT, pdFALSE, pdFALSE, portMAX_DELAY);
325+
if (ping_ret_val != 0) {
326+
ESP_LOGE(TAG, "Ping command failed with return value: %d", ping_ret_val);
327+
}
365328
CHECK_USB_DISCONNECTION(event_group);
366329

367-
esp_mqtt_client_destroy(mqtt_client);
368330
err = esp_modem_set_mode(dce, ESP_MODEM_MODE_COMMAND);
369331
if (err != ESP_OK) {
370332
ESP_LOGE(TAG, "esp_modem_set_mode(ESP_MODEM_MODE_COMMAND) failed with %d", err);

components/esp_modem/examples/pppos_client/pytest_pppos_client.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
1+
# SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
22
# SPDX-License-Identifier: Unlicense OR CC0-1.0
33
from __future__ import print_function, unicode_literals
44

@@ -8,16 +8,12 @@ def test_pppos_connect(dut):
88
steps:
99
1. initializes connection with SIM800
1010
2. checks we get an IP
11-
3. checks for the MQTT events
11+
3. checks that the ping command works
1212
4. checks that the client cleanly disconnects
1313
"""
1414
# Check the sequence of connecting, publishing, disconnecting
1515
dut.expect('Modem Connect to PPP Server', timeout=90)
16-
# Check for MQTT connection and the data event
17-
dut.expect('MQTT_EVENT_CONNECTED')
18-
dut.expect('MQTT_EVENT_DATA')
19-
dut.expect('TOPIC=/ci/esp-modem/pppos-client')
20-
dut.expect('DATA=esp32-pppos')
16+
dut.expect('Ping command finished with return value: 0', timeout=30)
2117
# Check that we have disconnected
2218
dut.expect('User interrupted event')
2319
# And can use commands again

0 commit comments

Comments
 (0)