From 868d0a1ecbfbcd1f04b5c03403d6cffb439ce8fe Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Tue, 29 Oct 2024 22:34:23 +0100 Subject: Verschiebe MQTT Code in ein eigenes Modul --- src/main.c | 63 +------------------------------------------------------------- 1 file changed, 1 insertion(+), 62 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index 8a25176..5bef36b 100644 --- a/src/main.c +++ b/src/main.c @@ -8,9 +8,8 @@ #include // Project -#include - #include "config.h" +#include "mqtt.h" #ifndef UNUSED # define UNUSED(x) (void) (x) @@ -41,66 +40,6 @@ init(void) (void) atexit(cleanup); } -static struct mosquitto * -connect(const char *clientid, // NOLINT - const char *username, // NOLINT - const char *password, // NOLINT - const char *hostname, // NOLINT - int port, - void callback(struct mosquitto *, void *, const struct mosquitto_message *), - void *userdata) -{ - struct mosquitto *client = mosquitto_new(clientid, true, userdata); - if ( client == NULL ) { - (void) fprintf(stderr, "error on new client...\n"); - return NULL; - } - - int err = mosquitto_username_pw_set(client, username, password); - if ( err != MOSQ_ERR_SUCCESS ) { - (void) fprintf(stderr, "error: %s\n", mosquitto_strerror(err)); - mosquitto_destroy(client); - return NULL; - } - - mosquitto_message_callback_set(client, callback); - - err = mosquitto_connect(client, hostname, port, KEEPALIVE); - if ( err != MOSQ_ERR_SUCCESS ) { - (void) fprintf(stderr, "error: %s\n", mosquitto_strerror(err)); - mosquitto_destroy(client); - return NULL; - } - - return client; -} - -static void -run(struct mosquitto *client, const char *topics[], const volatile bool *quit) -{ - for ( size_t idx = 0; topics[idx] != NULL; ++idx ) { - mosquitto_subscribe(client, NULL, topics[idx], 0); - } - - while ( !*quit ) { - static const int defaultTimeout = -1; // 1000ms - - int err = mosquitto_loop(client, defaultTimeout, 1); - if ( !terminate && err ) { - (void) fprintf(stderr, "connection error: %s\n", mosquitto_strerror(err)); - sleep(WAIT_UNTIL_RECONNECT); // NOLINT - mosquitto_reconnect(client); - } - } -} - -static void -shutdown(struct mosquitto *client) -{ - mosquitto_disconnect(client); - mosquitto_destroy(client); -} - static void callback(struct mosquitto *client, void *userdata, const struct mosquitto_message *message) { -- cgit v1.3