MQTT
Revision 25:d13a6c558164, committed 2014-05-09
- Comitter:
- sam_grove
- Date:
- Fri May 09 23:01:35 2014 +0000
- Parent:
- 24:c56a5c7d2a52
- Child:
- 28:8b2abe9bd814
- Child:
- 29:833386b16f3e
- Commit message:
- Simplify example by moving IPStack into this library for each transport. Working on FP usage to not need the FP.cpp inclusion in main
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IPStack/EthernetInterfaceIPStack.h Fri May 09 23:01:35 2014 +0000 @@ -0,0 +1,90 @@ + +#ifndef ETHERNETINTERFACEIPSTACK_H +#define ETHERNETINTERFACEIPSTACK_H + +#include "EthernetInterface.h" + +class IPStack +{ +public: + IPStack() + { + eth.init(); // Use DHCP + eth.connect(); + mysock.set_blocking(false, 1000); // 1 second Timeout + } + + int connect(char* hostname, int port) + { + return mysock.connect(hostname, port); + } + + int read(char* buffer, int len, int timeout) + { + mysock.set_blocking(false, timeout); + return mysock.receive(buffer, len); + } + + int write(char* buffer, int len, int timeout) + { + mysock.set_blocking(false, timeout); + return mysock.send(buffer, len); + } + + int disconnect() + { + return mysock.close(); + } + +private: + + EthernetInterface eth; + TCPSocketConnection mysock; + +}; + + +class Countdown +{ +public: + Countdown() + { + t = Timer(); + } + + Countdown(int ms) + { + t = Timer(); + countdown_ms(ms); + } + + + bool expired() + { + return t.read_ms() >= interval_end_ms; + } + + void countdown_ms(int ms) + { + t.stop(); + interval_end_ms = ms; + t.reset(); + t.start(); + } + + void countdown(int seconds) + { + countdown_ms(seconds * 1000); + } + + int left_ms() + { + return interval_end_ms - t.read_ms(); + } + +private: + Timer t; + int interval_end_ms; +}; + +#endif
--- a/MQTTClient.h Fri May 09 21:33:14 2014 +0000 +++ b/MQTTClient.h Fri May 09 23:01:35 2014 +0000 @@ -26,6 +26,8 @@ match wildcard topics + updating usage of FP. Try to remove inclusion of FP.cpp in main. sg- + */ #if !defined(MQTTCLIENT_H) @@ -190,17 +192,18 @@ PacketId packetid; - typedef FP<void, Message*> messageHandlerFP; +// typedef FP<void, Message*> messageHandlerFP; +// FP<void, Message*> messageHandlerFP; struct MessageHandlers { const char* topic; - messageHandlerFP fp; + FP<void, Message*> fp; } messageHandlers[MAX_MESSAGE_HANDLERS]; // Message handlers are indexed by subscription topic - messageHandlerFP defaultMessageHandler; + FP<void, Message*> defaultMessageHandler; - typedef FP<int, connectionLostInfo*> connectionLostFP; - connectionLostFP connectionLostHandler; + FP<int, connectionLostInfo*> connectionLostHandler; +// connectionLostFP connectionLostHandler; }; @@ -350,7 +353,7 @@ // read the socket, see what work is due int packet_type = readPacket(timer); - int len, rc; + int len = 0, rc; switch (packet_type) { case CONNACK: @@ -362,6 +365,7 @@ Message msg; rc = MQTTDeserialize_publish((int*)&msg.dup, (int*)&msg.qos, (int*)&msg.retained, (int*)&msg.id, &topicName, (char**)&msg.payload, (int*)&msg.payloadlen, readbuf, MAX_MQTT_PACKET_SIZE);; + rc = rc; // make sure optimizer doesnt omit this deliverMessage(&topicName, &msg); if (msg.qos != QOS0) {
--- a/MQTTPacket.lib Fri May 09 21:33:14 2014 +0000 +++ b/MQTTPacket.lib Fri May 09 23:01:35 2014 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/teams/mqtt/code/MQTTPacket/#1b8fb13fc6ef +http://mbed.org/teams/mqtt/code/MQTTPacket/#3893bc7343f4