VoteController

Dependencies:   MQTT

Fork of PGO6_VoteController_template by Jens de hoog

Revision:
3:6b6cab4ad185
Parent:
2:5b7d055dbc91
Child:
4:74736eccf6bb
--- a/main.cpp	Tue Oct 31 09:01:56 2017 +0000
+++ b/main.cpp	Thu Oct 11 15:58:11 2018 +0000
@@ -41,8 +41,88 @@
             sendMessage(&client, topic, buf, qos, retained, duplicate)
 */
 
-int main(int argc, char* argv[])
-{
+DigitalOut led2(LED2);
+InterruptIn button1(USER_BUTTON);
+EthernetInterface eth;
+
+/**
+ Send the MQTT message to a requested topic
+*/
+int sendMessage(char* message,char* topic, MQTT::Client<MQTTNetwork, Countdown>* client){
+    MQTT::Message msg;
+ 
+    // QoS 0
+    char buf[100];
+    sprintf(buf, message);
+    msg.qos = MQTT::QOS0;
+    msg.retained = false;
+    msg.dup = false;
+    msg.payload = (void*)buf;
+    msg.payloadlen = strlen(buf)+1;
+    return client->publish(topic, msg);
+}
 
+int main(int argc, char* argv[])
+{   
+    //Startup
+    if(eth.connect() != 0){
+        printf("Error initializing the ethernet interface!");
+        return -1;
+    }
+    printf("IP address %s\n",eth.get_ip_address());
+    
+    MQTTNetwork mqttNetwork(&eth);
+    MQTT::Client<MQTTNetwork, Countdown> client(mqttNetwork);
+    int rc = mqttNetwork.connect(BROKER_NAME, BROKER_PORT);
+    if (rc != 0){
+        printf("Error connection to MQTT Broker code: %d\n",rc);
+        return -1;
+    }
+    printf("MQTT Broker connected!\n");
+    MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
+    data.MQTTVersion = 3;
+    data.clientID.cstring = "clientId-d9oe9aQeGh";
+    data.username.cstring = "dieter";
+    data.password.cstring = "123456";
+    rc = client.connect(data);
+    if (rc != 0){
+        printf("Error MQTT connetion data code: %d\n",rc);
+        return -1;
+    }
+    printf("MQTT client connected!\n");
+    
+    // Attach ISR to handle button press event
+    button1.fall(callback(button1_onpressed_cb));
+    
+    //Program
+    while(1){
+       
+        if(multiclick_state != 0){
+            printf("Button pressed %d times\n", multiclick_state);
+            switch(multiclick_state){
+                case 1:
+                    printf("Upvote\n");
+                    sendMessage("UPVOTE","dieter/1",&client);
+                    break;
+                case 2:
+                    printf("Downvote\n");
+                    sendMessage("DOWNVOTE","dieter",&client);
+                    break;
+                case 3:
+                    printf("Nothing\n");
+                    break;
+                case 4:
+                    printf("Disconnecting...\n");
+                    mqttNetwork.disconnect();
+                    printf("Bye ;)\n");
+                    return 1;
+                default:
+                    //DO nothing
+                    break;       
+            }   
+            //Reset the multiclick state
+            multiclick_state = 0;
+        }
+    }
     return 0;
-}
+}
\ No newline at end of file