Dieter Balemans
/
PGO6_VoteController_Dieter_Balemans
VoteController
Fork of PGO6_VoteController_template by
Diff: main.cpp
- Revision:
- 3:6b6cab4ad185
- Parent:
- 2:5b7d055dbc91
- Child:
- 4:74736eccf6bb
diff -r 5b7d055dbc91 -r 6b6cab4ad185 main.cpp --- 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(ð); + 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