Skip to content

Commit e3573c8

Browse files
committed
app_insights: Insights transport changes
1 parent 5c95345 commit e3573c8

File tree

1 file changed

+51
-16
lines changed

1 file changed

+51
-16
lines changed

examples/common/app_insights/app_insights.c

Lines changed: 51 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#include <esp_insights.h>
1313
#include <string.h>
1414
#include <esp_rmaker_core.h>
15-
#include <esp_rmaker_factory.h>
15+
#include <esp_rmaker_common_events.h>
1616

1717
#if CONFIG_APP_INSIGHTS_ENABLE_LOG_TYPE_ALL
1818
#define APP_INSIGHTS_LOG_TYPE ESP_DIAG_LOG_TYPE_ERROR \
@@ -24,6 +24,48 @@
2424

2525
esp_err_t esp_insights_enable(esp_insights_config_t *config);
2626

27+
#define INSIGHTS_TOPIC_SUFFIX "diagnostics/from-node"
28+
29+
static int app_insights_data_send(void *data, size_t len)
30+
{
31+
char topic[128];
32+
int msg_id = -1;
33+
if (data == NULL) {
34+
return 0;
35+
}
36+
char *node_id = esp_rmaker_get_node_id();
37+
if (!node_id) {
38+
return -1;
39+
}
40+
snprintf(topic, sizeof(topic), "node/%s/%s", node_id, INSIGHTS_TOPIC_SUFFIX);
41+
esp_rmaker_mqtt_publish(topic, data, len, RMAKER_MQTT_QOS1, &msg_id);
42+
return msg_id;
43+
}
44+
45+
static void rmaker_common_event_handler(void* arg, esp_event_base_t event_base,
46+
int32_t event_id, void* event_data)
47+
{
48+
if (event_base != RMAKER_COMMON_EVENT) {
49+
return;
50+
}
51+
esp_insights_transport_event_data_t data;
52+
switch(event_id) {
53+
case RMAKER_MQTT_EVENT_PUBLISHED:
54+
memset(&data, 0, sizeof(data));
55+
data.msg_id = *(int *)event_data;
56+
esp_event_post(INSIGHTS_EVENT, INSIGHTS_EVENT_TRANSPORT_SEND_SUCCESS, &data, sizeof(data), portMAX_DELAY);
57+
break;
58+
#ifdef CONFIG_MQTT_REPORT_DELETED_MESSAGES
59+
case RMAKER_MQTT_EVENT_MSG_DELETED:
60+
memset(&data, 0, sizeof(data));
61+
data.msg_id = *(int *)event_data;
62+
esp_event_post(INSIGHTS_EVENT, INSIGHTS_EVENT_TRANSPORT_SEND_FAILED, &data, sizeof(data), portMAX_DELAY);
63+
break;
64+
#endif /* CONFIG_MQTT_REPORT_DELETED_MESSAGES */
65+
default:
66+
break;
67+
}
68+
}
2769
#endif /* CONFIG_ESP_INSIGHTS_ENABLED */
2870

2971
#define TAG "app_insights"
@@ -33,26 +75,19 @@ esp_err_t app_insights_enable(void)
3375
#ifdef CONFIG_ESP_INSIGHTS_ENABLED
3476
#ifdef CONFIG_ESP_RMAKER_SELF_CLAIM
3577
ESP_LOGW(TAG, "Nodes with Self Claiming may not be accessible for Insights.");
36-
/* This is required so that the esp insights component will get correct
37-
* node id from NVS
38-
*/
39-
char *node_id = esp_rmaker_get_node_id();
40-
if (node_id) {
41-
esp_rmaker_factory_set("node_id", node_id, strlen(node_id));
42-
}
4378
#endif
44-
esp_rmaker_mqtt_config_t mqtt_config = {
45-
.init = NULL,
46-
.connect = NULL,
47-
.disconnect = NULL,
48-
.publish = esp_rmaker_mqtt_publish,
49-
.subscribe = esp_rmaker_mqtt_subscribe,
50-
.unsubscribe = esp_rmaker_mqtt_unsubscribe,
79+
char *node_id = esp_rmaker_get_node_id();
80+
81+
esp_insights_transport_config_t transport = {
82+
.callbacks.data_send = app_insights_data_send,
5183
};
52-
esp_insights_mqtt_setup(mqtt_config);
84+
esp_insights_transport_register(&transport);
85+
86+
esp_event_handler_register(RMAKER_COMMON_EVENT, ESP_EVENT_ANY_ID, rmaker_common_event_handler, NULL);
5387

5488
esp_insights_config_t config = {
5589
.log_type = APP_INSIGHTS_LOG_TYPE,
90+
.node_id = node_id,
5691
};
5792
esp_insights_enable(&config);
5893
#else

0 commit comments

Comments
 (0)