#include <logger.h> #include <handlers.h> #include <connections.h> #include <models/controller.h> void handler_mqtt(struct mg_connection *nc, int ev, void *p) { struct mg_mqtt_message *msg = (struct mg_mqtt_message *) p; (void) nc; switch (ev) { case MG_EV_CONNECT: { struct mg_send_mqtt_handshake_opts opts; memset(&opts, 0, sizeof(opts)); // TODO add password mg_set_protocol_mqtt(nc); mg_send_mqtt_handshake_opt(nc, global_controller->name, opts); break; } case MG_EV_MQTT_CONNACK: if(msg->connack_ret_code != MG_EV_MQTT_CONNACK_ACCEPTED) { LOG_INFO("Got MQTT connection error: %d\n", msg->connack_ret_code); break; } if(!global_connection_mqtt) { LOG_DEBUG("connected to MQTT server\n"); global_connection_mqtt = nc; } break; case MG_EV_CLOSE: if(global_connection_mqtt) { LOG_DEBUG("disconnected from MQTT server\n"); } global_connection_mqtt = NULL; break; } }