// includes #include #include #include #include "mosquitto.h" #include "runtime.h" #include "messageQueue.h" #define MQTT_HOST "localhost" #define MQTT_PORT 1883 // TODO: add ifndef to these ones #define MQTT_QOS 0 #define MQTT_KEEPALIVE 60 #define MQTT_MAX_CONNECT_TRIES 10 #define MQTT_CONNECT_WAIT 5 // global vars struct topicList { char** list; int numElements; } ; struct mosquitto *mosqPtr; int bConnected; // local functions void mqtt_message_callback(struct mosquitto *mosq, void *userdata, const struct mosquitto_message *message) { int i; char* payloadptr; char payload[1024]; duk_context *dukCtx = (duk_context*)userdata; printf("Message arrived to topic: %s, message is %d chars long\n", (char*)message->topic, message->payloadlen); printf(" message: '%s'\n", (char*)message->payload); handleMessage((char*)message->topic, (char*)message->payload); } void mqtt_connect_callback(struct mosquitto *mosq, void *userdata, int result) { int i; if(!result){ /* Subscribe to required topics on successful connect. */ mosquitto_subscribe(mosq, NULL, MQ_CARD_TOPIC, MQTT_QOS); mosquitto_subscribe(mosq, NULL, MQ_STATUS_TOPIC, MQTT_QOS); mosquitto_subscribe(mosq, NULL, MQ_NOTIFICATION_TOPIC, MQTT_QOS); }else{ fprintf(stderr, "Connect failed\n"); } } void mqtt_subscribe_callback(struct mosquitto *mosq, void *userdata, int mid, int qos_count, const int *granted_qos) { int i; printf("Subscribed (mid: %d): %d", mid, granted_qos[0]); for(i=1; i