@@ -41,78 +41,83 @@ static void send_binary(esp_mqtt_client_handle_t client)
41
41
{
42
42
spi_flash_mmap_handle_t out_handle ;
43
43
const void * binary_address ;
44
- const esp_partition_t * partition = esp_ota_get_running_partition ();
44
+ const esp_partition_t * partition = esp_ota_get_running_partition ();
45
45
esp_partition_mmap (partition , 0 , partition -> size , SPI_FLASH_MMAP_DATA , & binary_address , & out_handle );
46
46
// sending only the configured portion of the partition (if it's less than the partition size)
47
47
int binary_size = MIN (CONFIG_BROKER_BIN_SIZE_TO_SEND ,partition -> size );
48
48
int msg_id = esp_mqtt_client_publish (client , "/topic/binary" , binary_address , binary_size , 0 , 0 );
49
49
ESP_LOGI (TAG , "binary sent with msg_id=%d" , msg_id );
50
50
}
51
51
52
- static esp_err_t mqtt_event_handler_cb (esp_mqtt_event_handle_t event )
52
+ /*
53
+ * @brief Event handler registered to receive MQTT events
54
+ *
55
+ * This function is called by the MQTT client event loop.
56
+ *
57
+ * @param handler_args user data registered to the event.
58
+ * @param base Event base for the handler(always MQTT Base in this example).
59
+ * @param event_id The id for the received event.
60
+ * @param event_data The data for the event, esp_mqtt_event_handle_t.
61
+ */
62
+ static void mqtt_event_handler (void * handler_args , esp_event_base_t base , int32_t event_id , void * event_data )
53
63
{
64
+ ESP_LOGD (TAG , "Event dispatched from event loop base=%s, event_id=%d" , base , event_id );
65
+ esp_mqtt_event_handle_t event = event_data ;
54
66
esp_mqtt_client_handle_t client = event -> client ;
55
67
int msg_id ;
56
- // your_context_t *context = event->context;
57
- switch (event -> event_id ) {
58
- case MQTT_EVENT_CONNECTED :
59
- ESP_LOGI (TAG , "MQTT_EVENT_CONNECTED" );
60
- msg_id = esp_mqtt_client_subscribe (client , "/topic/qos0" , 0 );
61
- ESP_LOGI (TAG , "sent subscribe successful, msg_id=%d" , msg_id );
62
-
63
- msg_id = esp_mqtt_client_subscribe (client , "/topic/qos1" , 1 );
64
- ESP_LOGI (TAG , "sent subscribe successful, msg_id=%d" , msg_id );
65
-
66
- msg_id = esp_mqtt_client_unsubscribe (client , "/topic/qos1" );
67
- ESP_LOGI (TAG , "sent unsubscribe successful, msg_id=%d" , msg_id );
68
- break ;
69
- case MQTT_EVENT_DISCONNECTED :
70
- ESP_LOGI (TAG , "MQTT_EVENT_DISCONNECTED" );
71
- break ;
72
-
73
- case MQTT_EVENT_SUBSCRIBED :
74
- ESP_LOGI (TAG , "MQTT_EVENT_SUBSCRIBED, msg_id=%d" , event -> msg_id );
75
- msg_id = esp_mqtt_client_publish (client , "/topic/qos0" , "data" , 0 , 0 , 0 );
76
- ESP_LOGI (TAG , "sent publish successful, msg_id=%d" , msg_id );
77
- break ;
78
- case MQTT_EVENT_UNSUBSCRIBED :
79
- ESP_LOGI (TAG , "MQTT_EVENT_UNSUBSCRIBED, msg_id=%d" , event -> msg_id );
80
- break ;
81
- case MQTT_EVENT_PUBLISHED :
82
- ESP_LOGI (TAG , "MQTT_EVENT_PUBLISHED, msg_id=%d" , event -> msg_id );
83
- break ;
84
- case MQTT_EVENT_DATA :
85
- ESP_LOGI (TAG , "MQTT_EVENT_DATA" );
86
- printf ("TOPIC=%.*s\r\n" , event -> topic_len , event -> topic );
87
- printf ("DATA=%.*s\r\n" , event -> data_len , event -> data );
88
- if (strncmp (event -> data , "send binary please" , event -> data_len ) == 0 ) {
89
- ESP_LOGI (TAG , "Sending the binary" );
90
- send_binary (client );
91
- }
92
- break ;
93
- case MQTT_EVENT_ERROR :
94
- ESP_LOGI (TAG , "MQTT_EVENT_ERROR" );
95
- if (event -> error_handle -> error_type == MQTT_ERROR_TYPE_TCP_TRANSPORT ) {
96
- ESP_LOGI (TAG , "Last error code reported from esp-tls: 0x%x" , event -> error_handle -> esp_tls_last_esp_err );
97
- ESP_LOGI (TAG , "Last tls stack error number: 0x%x" , event -> error_handle -> esp_tls_stack_err );
98
- ESP_LOGI (TAG , "Last captured errno : %d (%s)" , event -> error_handle -> esp_transport_sock_errno ,
99
- strerror (event -> error_handle -> esp_transport_sock_errno ));
100
- } else if (event -> error_handle -> error_type == MQTT_ERROR_TYPE_CONNECTION_REFUSED ) {
101
- ESP_LOGI (TAG , "Connection refused error: 0x%x" , event -> error_handle -> connect_return_code );
102
- } else {
103
- ESP_LOGW (TAG , "Unknown error type: 0x%x" , event -> error_handle -> error_type );
104
- }
105
- break ;
106
- default :
107
- ESP_LOGI (TAG , "Other event id:%d" , event -> event_id );
108
- break ;
68
+ switch ((esp_mqtt_event_id_t )event_id ) {
69
+ case MQTT_EVENT_CONNECTED :
70
+ ESP_LOGI (TAG , "MQTT_EVENT_CONNECTED" );
71
+ msg_id = esp_mqtt_client_subscribe (client , "/topic/qos0" , 0 );
72
+ ESP_LOGI (TAG , "sent subscribe successful, msg_id=%d" , msg_id );
73
+
74
+ msg_id = esp_mqtt_client_subscribe (client , "/topic/qos1" , 1 );
75
+ ESP_LOGI (TAG , "sent subscribe successful, msg_id=%d" , msg_id );
76
+
77
+ msg_id = esp_mqtt_client_unsubscribe (client , "/topic/qos1" );
78
+ ESP_LOGI (TAG , "sent unsubscribe successful, msg_id=%d" , msg_id );
79
+ break ;
80
+ case MQTT_EVENT_DISCONNECTED :
81
+ ESP_LOGI (TAG , "MQTT_EVENT_DISCONNECTED" );
82
+ break ;
83
+
84
+ case MQTT_EVENT_SUBSCRIBED :
85
+ ESP_LOGI (TAG , "MQTT_EVENT_SUBSCRIBED, msg_id=%d" , event -> msg_id );
86
+ msg_id = esp_mqtt_client_publish (client , "/topic/qos0" , "data" , 0 , 0 , 0 );
87
+ ESP_LOGI (TAG , "sent publish successful, msg_id=%d" , msg_id );
88
+ break ;
89
+ case MQTT_EVENT_UNSUBSCRIBED :
90
+ ESP_LOGI (TAG , "MQTT_EVENT_UNSUBSCRIBED, msg_id=%d" , event -> msg_id );
91
+ break ;
92
+ case MQTT_EVENT_PUBLISHED :
93
+ ESP_LOGI (TAG , "MQTT_EVENT_PUBLISHED, msg_id=%d" , event -> msg_id );
94
+ break ;
95
+ case MQTT_EVENT_DATA :
96
+ ESP_LOGI (TAG , "MQTT_EVENT_DATA" );
97
+ printf ("TOPIC=%.*s\r\n" , event -> topic_len , event -> topic );
98
+ printf ("DATA=%.*s\r\n" , event -> data_len , event -> data );
99
+ if (strncmp (event -> data , "send binary please" , event -> data_len ) == 0 ) {
100
+ ESP_LOGI (TAG , "Sending the binary" );
101
+ send_binary (client );
102
+ }
103
+ break ;
104
+ case MQTT_EVENT_ERROR :
105
+ ESP_LOGI (TAG , "MQTT_EVENT_ERROR" );
106
+ if (event -> error_handle -> error_type == MQTT_ERROR_TYPE_TCP_TRANSPORT ) {
107
+ ESP_LOGI (TAG , "Last error code reported from esp-tls: 0x%x" , event -> error_handle -> esp_tls_last_esp_err );
108
+ ESP_LOGI (TAG , "Last tls stack error number: 0x%x" , event -> error_handle -> esp_tls_stack_err );
109
+ ESP_LOGI (TAG , "Last captured errno : %d (%s)" , event -> error_handle -> esp_transport_sock_errno ,
110
+ strerror (event -> error_handle -> esp_transport_sock_errno ));
111
+ } else if (event -> error_handle -> error_type == MQTT_ERROR_TYPE_CONNECTION_REFUSED ) {
112
+ ESP_LOGI (TAG , "Connection refused error: 0x%x" , event -> error_handle -> connect_return_code );
113
+ } else {
114
+ ESP_LOGW (TAG , "Unknown error type: 0x%x" , event -> error_handle -> error_type );
115
+ }
116
+ break ;
117
+ default :
118
+ ESP_LOGI (TAG , "Other event id:%d" , event -> event_id );
119
+ break ;
109
120
}
110
- return ESP_OK ;
111
- }
112
-
113
- static void mqtt_event_handler (void * handler_args , esp_event_base_t base , int32_t event_id , void * event_data ) {
114
- ESP_LOGD (TAG , "Event dispatched from event loop base=%s, event_id=%d" , base , event_id );
115
- mqtt_event_handler_cb (event_data );
116
121
}
117
122
118
123
static void mqtt_app_start (void )
@@ -124,7 +129,8 @@ static void mqtt_app_start(void)
124
129
125
130
ESP_LOGI (TAG , "[APP] Free memory: %d bytes" , esp_get_free_heap_size ());
126
131
esp_mqtt_client_handle_t client = esp_mqtt_client_init (& mqtt_cfg );
127
- esp_mqtt_client_register_event (client , ESP_EVENT_ANY_ID , mqtt_event_handler , client );
132
+ /* The last argument may be used to pass data to the event handler, in this example mqtt_event_handler */
133
+ esp_mqtt_client_register_event (client , ESP_EVENT_ANY_ID , mqtt_event_handler , NULL );
128
134
esp_mqtt_client_start (client );
129
135
}
130
136
0 commit comments