// Standard C #include #include #include #include // System #include // Mosquitto #include // Project #include "config.h" #include "mqtt.h" #ifndef UNUSED # define UNUSED(x) (void) (x) #endif static volatile bool terminate; // NOLINT static void signal_handler(int signal) { if ( signal == SIGINT ) { terminate = true; } } static void application_cleanup(void) { mosquitto_lib_cleanup(); } static void application_init(void) { terminate = false; (void) signal(SIGINT, signal_handler); mosquitto_lib_init(); (void) atexit(application_cleanup); } static void callback(struct mosquitto *client, void *userdata, const struct mosquitto_message *message) { UNUSED(client); UNUSED(userdata); printf("message '%.*s' for topic '%s'\n", message->payloadlen, (const char *) message->payload, message->topic); } int main(void) { application_init(); struct mosquitto *client = mqtt_connect( CLIENTID, USERNAME, PASSWORD, HOSTNAME, PORT, NULL); if ( !client ) { return EXIT_FAILURE; } mqtt_handle_messages(client, (const char *[]){ TOPIC, TOPIC2, NULL }, callback, &terminate); mqtt_shutdown(client); return EXIT_SUCCESS; }