43 lines
1.2 KiB
C
43 lines
1.2 KiB
C
#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;
|
|
}
|
|
}
|