aboutsummaryrefslogtreecommitdiffstats
path: root/firmware/src/mqtt.c
diff options
context:
space:
mode:
authorFilip Wandzio <contact@philw.dev>2025-09-05 03:30:24 +0200
committerFilip Wandzio <contact@philw.dev>2025-09-05 03:30:24 +0200
commit01713bbe20d2cf5aafbe5eb32721d3e4fc5823d8 (patch)
tree33748d0019e3939bd0daf50940407e51d4325a8f /firmware/src/mqtt.c
parent1ba21da6cbc63c0c549fb92731e25bedc482eb51 (diff)
downloade1-01713bbe20d2cf5aafbe5eb32721d3e4fc5823d8.tar.gz
e1-01713bbe20d2cf5aafbe5eb32721d3e4fc5823d8.zip
Standarize the project directory for monorepo-like developer experience
Move the clang formatter to the root of the three so all nested projects could use it Provide README for all other projects Refactor the code in rtt agregator Signed-off-by: Filip Wandzio <contact@philw.dev>
Diffstat (limited to 'firmware/src/mqtt.c')
-rw-r--r--firmware/src/mqtt.c93
1 files changed, 48 insertions, 45 deletions
diff --git a/firmware/src/mqtt.c b/firmware/src/mqtt.c
index 716feec..90451bc 100644
--- a/firmware/src/mqtt.c
+++ b/firmware/src/mqtt.c
@@ -27,59 +27,62 @@
27static esp_mqtt_client_handle_t client; 27static esp_mqtt_client_handle_t client;
28 28
29static void mqtt_event_handler(void *handler_args, esp_event_base_t base, 29static void mqtt_event_handler(void *handler_args, esp_event_base_t base,
30 int32_t event_id, void *event_data) { 30 int32_t event_id, void *event_data)
31 esp_mqtt_event_handle_t event = event_data; 31{
32 esp_mqtt_event_handle_t event = event_data;
32 33
33 switch (event->event_id) { 34 switch (event->event_id) {
34 case MQTT_EVENT_CONNECTED: 35 case MQTT_EVENT_CONNECTED:
35 printf("MQTT connected!\n"); 36 printf("MQTT connected!\n");
36 esp_mqtt_client_subscribe(event->client, SUB_TOPIC, 1); 37 esp_mqtt_client_subscribe(event->client, SUB_TOPIC, 1);
37 break; 38 break;
38 39
39 case MQTT_EVENT_DATA: { 40 case MQTT_EVENT_DATA: {
40 char topic[event->topic_len + 1]; 41 char topic[event->topic_len + 1];
41 char data[event->data_len + 1]; 42 char data[event->data_len + 1];
42 memcpy(topic, event->topic, event->topic_len); 43 memcpy(topic, event->topic, event->topic_len);
43 topic[event->topic_len] = '\0'; 44 topic[event->topic_len] = '\0';
44 memcpy(data, event->data, event->data_len); 45 memcpy(data, event->data, event->data_len);
45 data[event->data_len] = '\0'; 46 data[event->data_len] = '\0';
46 47
47 printf("MQTT Msg received\nTopic: %s\nData: %s\n", topic, data); 48 printf("MQTT Msg received\nTopic: %s\nData: %s\n", topic, data);
48 49
49 char *endptr; 50 char *endptr;
50 long long sent = strtoll(data, &endptr, 10); 51 long long sent = strtoll(data, &endptr, 10);
51 if (endptr != data) { 52 if (endptr != data) {
52 long long now = esp_timer_get_time() / 1000ULL; 53 long long now = esp_timer_get_time() / 1000ULL;
53 long long rtt = now - sent; 54 long long rtt = now - sent;
54 printf("RTT: %lld ms\n", rtt); 55 printf("RTT: %lld ms\n", rtt);
55 } 56 }
56 break; 57 break;
57 } 58 }
58 59
59 default: 60 default:
60 break; 61 break;
61 } 62 }
62} 63}
63 64
64static void publisher_task(void *pvParameters) { 65static void publisher_task(void *pvParameters)
65 while (1) { 66{
66 char buf[BUFFER_SIZE]; 67 while (1) {
67 snprintf(buf, BUFFER_SIZE, "%lld", 68 char buf[BUFFER_SIZE];
68 (long long)(esp_timer_get_time() / 1000ULL)); 69 snprintf(buf, BUFFER_SIZE, "%lld",
69 esp_mqtt_client_publish(client, PUB_TOPIC, buf, 0, 1, 0); 70 (long long)(esp_timer_get_time() / 1000ULL));
70 vTaskDelay(pdMS_TO_TICKS(PUBLISH_INTERVAL_MS)); 71 esp_mqtt_client_publish(client, PUB_TOPIC, buf, 0, 1, 0);
71 } 72 vTaskDelay(pdMS_TO_TICKS(PUBLISH_INTERVAL_MS));
73 }
72} 74}
73 75
74void mqtt_app_start(void) { 76void mqtt_app_start(void)
75 esp_mqtt_client_config_t mqtt_cfg = { 77{
76 .broker.address.uri = MQTT_URI, 78 esp_mqtt_client_config_t mqtt_cfg = {
77 }; 79 .broker.address.uri = MQTT_URI,
78 client = esp_mqtt_client_init(&mqtt_cfg); 80 };
79 esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, 81 client = esp_mqtt_client_init(&mqtt_cfg);
80 NULL); 82 esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID,
81 esp_mqtt_client_start(client); 83 mqtt_event_handler, NULL);
84 esp_mqtt_client_start(client);
82 85
83 xTaskCreate(publisher_task, "publisher_task", PUBLISHER_TASK_STACK_SIZE, NULL, 86 xTaskCreate(publisher_task, "publisher_task", PUBLISHER_TASK_STACK_SIZE,
84 PUBLISHER_TASK_PRIORITY, NULL); 87 NULL, PUBLISHER_TASK_PRIORITY, NULL);
85} 88}