From e1f956193734182bd12ec8c1f3c4cbb200e32a7d Mon Sep 17 00:00:00 2001 From: sfja Date: Sat, 28 Mar 2026 23:55:42 +0100 Subject: [PATCH] receive skateboard data on backend --- backend/src/main.cpp | 8 +++++--- backend/src/mqtt.cpp | 24 +++++++++++++----------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/backend/src/main.cpp b/backend/src/main.cpp index 41ed88b..6ed9de0 100644 --- a/backend/src/main.cpp +++ b/backend/src/main.cpp @@ -2,6 +2,7 @@ #include "mqtt.hpp" #include "server.hpp" #include +#include #include #include #include @@ -17,15 +18,16 @@ int main(void) { auto client = mst::mqtt::Client("localhost", 1883, "test", "1234"); - client.subscribe("/", [&](std::string_view text) { - std::cout << std::format("Received '{}'\n", text); + client.subscribe("/skateboard/update", [&](std::string_view text) { + // + std::println("Skateboard: {}", text); }); auto mqtt_thread = std::thread([&]() { try { client.run(); } catch (mst::mqtt::Error& ex) { - std::cerr << std::format("MQTT Client failed: {}", ex.what()); + std::println(stderr, "MQTT Client failed: {}", ex.what()); std::abort(); } }); diff --git a/backend/src/mqtt.cpp b/backend/src/mqtt.cpp index 967b592..5d3f86b 100644 --- a/backend/src/mqtt.cpp +++ b/backend/src/mqtt.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -27,8 +28,8 @@ static void lib_init() int minor; int revision; mosquitto_lib_version(&major, &minor, &revision); - std::cout << std::format( - "[MQTT] Initializing mosquitto {}.{}.{}\n", major, minor, revision); + std::println( + "[MQTT] Initializing mosquitto {}.{}.{}", major, minor, revision); if (mosquitto_lib_init() != MOSQ_ERR_SUCCESS) throw Error("failed to initialize"); @@ -46,7 +47,7 @@ static void lib_deinit() if (!mosquitto_initialized || use_count < 0) return; - std::cout << std::format("[MQTT] Deinitializing mosquitto\n"); + std::println("[MQTT] Deinitializing mosquitto"); mosquitto_lib_cleanup(); mosquitto_initialized = false; @@ -167,14 +168,15 @@ void Client::subscribe( { auto inst = static_cast(m_inst); - m_subscriptions.emplace_back(topic, std::move(func)); - if (auto status = mosquitto_subscribe(inst, NULL, topic.c_str(), 0); status != MOSQ_ERR_SUCCESS) { throw Error(std::format( "could not subscribe ({})", mosquitto_strerror(status))); } + + std::println("[MQTT] Subscribed to '{}'", topic); + m_subscriptions.emplace_back(std::move(topic), std::move(func)); } void Client::run() @@ -201,22 +203,22 @@ void Client::cb_connect(int rc) "client could not connect ({})", mosquitto_reason_string(rc))); } - std::cout << std::format("[MQTT] Client connected\n"); + std::println("[MQTT] Client connected"); } void Client::cb_disconnect() { - std::cout << std::format("[MQTT] Client disconnected\n"); + std::println("[MQTT] Client disconnected"); } void Client::cb_publish() { - std::cout << std::format("[MQTT] Message published\n"); + std::println("[MQTT] Message published"); } void Client::cb_message(std::string_view topic, const void* data, size_t size) { - std::cout << std::format("[MQTT] Message received\n"); + std::println("[MQTT] Message received"); auto text = std::string_view(static_cast(data), size); @@ -229,12 +231,12 @@ void Client::cb_message(std::string_view topic, const void* data, size_t size) void Client::cb_subscribe() { - std::cout << std::format("[MQTT] Client subscribed\n"); + std::println("[MQTT] Client subscribed"); } void Client::cb_unsubscribe() { - std::cout << std::format("[MQTT] Client unsubscribed\n"); + std::println("[MQTT] Client unsubscribed"); } void Client::publish_raw(