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 */
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";
3537static EventGroupHandle_t event_group = NULL ;
3638static const int CONNECT_BIT = BIT0 ;
3739static const int DISCONNECT_BIT = BIT1 ;
38- static const int GOT_DATA_BIT = BIT2 ;
3940static 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-
10868static 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 );
0 commit comments