Reinout nvt
/
PGO6_VoteController_template
Initial commit
Fork of PGO6_VoteController_template by
Diff: main.cpp
- Revision:
- 1:e7a311bd038e
- Parent:
- 0:fd29cd85e75e
- Child:
- 2:f283e5274a0f
--- a/main.cpp Thu Oct 26 07:33:07 2017 +0000 +++ b/main.cpp Thu Oct 26 14:16:10 2017 +0000 @@ -1,15 +1,22 @@ #define APP_VERSION 0.6f #define MQTT_VERSION 3 -#define BROKER_NAME "broker.hivemq.com" +#define BROKER_NAME "143.129.39.151" #define BROKER_PORT 1883 - +#define CLIENTID "Reinout" +#define TOPIC "clubIOT/feedback" #include "debounce_button.h" #include "EthernetInterface.h" #include "MQTTNetwork.h" #include "MQTTmbed.h" #include "MQTTClient.h" -char* topic; +DigitalOut info(LED2); +DigitalOut connected(LED3); +EthernetInterface interface; +Timer timer; +MQTTNetwork network(&interface); +MQTT::Client<MQTTNetwork, Countdown> client(network); +MQTT::Message message; /** TODO @@ -40,9 +47,76 @@ - To have a uniform message sending procedure, use the following function usage: sendMessage(&client, topic, buf, qos, retained, duplicate) */ +void connect(char* name){ + interface.connect(); + while(interface.get_ip_address()== NULL){ + } + + network.connect(BROKER_NAME, BROKER_PORT); + MQTTPacket_connectData data = MQTTPacket_connectData_initializer; + data.MQTTVersion = 3; + data.clientID.cstring = name; + data.username.cstring = "smartcity"; + data.password.cstring = "smartcity"; + client.connect(data); + connected=1; +} + +void send(char* feedback){ + char buf[100]; + sprintf(buf, feedback); + sprintf(buf+ strlen(buf), CLIENTID); + // QoS 0 + message.qos = MQTT::QOS0; + message.retained = false; + message.dup = false; + message.payload = (void*)buf; + message.payloadlen = strlen(buf)+1; + client.publish(TOPIC, message); +} + +void disconnect(void){ + client.unsubscribe(TOPIC); + client.disconnect(); + network.disconnect(); + connected=0; +} + +void messageArrived(MQTT::MessageData& md) +{ + MQTT::Message &message = md.message; + info=1; + char buf[100]; + sprintf(buf,"Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id); + send(buf); + sprintf(buf,"Payload %.*s\r\n", message.payloadlen, (char*)message.payload); + send(buf); +} + +void subscribe(char* topic){ + client.subscribe(topic, MQTT::QOS2, messageArrived); +} int main(int argc, char* argv[]) { - + connect("Jef"); + subscribe("clubIOT/songmeta"); + InterruptIn button(USER_BUTTON); + + button.fall(callback(&button1_onpressed_cb)); + float x=0; + while(connected){ + if(!button1_busy && multiclick_state!=0){ + if(multiclick_state==1) + send("like-"); + else if(multiclick_state==2) + send("dislike-"); + else if(multiclick_state==4) + // if(connected==1) + disconnect(); + // else connect("Jef"); + multiclick_state=0; + } + } return 0; }