Fork of Hello MQTT, using mbed TLS for secure mqtt transport
Fork of HelloMQTT by
Revision 22:4d0628d13870, committed 2017-03-18
- Comitter:
- vpcola
- Date:
- Sat Mar 18 01:54:50 2017 +0000
- Parent:
- 21:4534812bb94f
- Commit message:
- Output to serial only
Changed in this revision
--- a/C12832.lib Fri Mar 17 08:42:29 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -https://mbed.org/teams/components/code/C12832/#03069e3deaa4
--- a/MQTTSNetwork.h Fri Mar 17 08:42:29 2017 +0000
+++ b/MQTTSNetwork.h Sat Mar 18 01:54:50 2017 +0000
@@ -121,18 +121,13 @@
printf("mbedtls_ssl_read returned %d\r\n", ret);
if (ret < 0) {
if (ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE)
- {
- // Some other error we can not recover from
print_mbedtls_error("mbedtls_ssl_read", ret);
- onError(tcpsocket, -1 );
- }
- else {
- // timeout occurred ...
+ else
printf("Timed out? ...\r\n");
- _error = ret;
- }
+
+ _error = ret;
printf("MQTTS client read returns with error!!!...\r\n");
- return -1;
+ return ret;
}
printf("MQTS client read successfully!! ...\r\n");
return ret ;
@@ -149,12 +144,12 @@
if (ret < 0) {
if (ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE) {
print_mbedtls_error("mbedtls_ssl_write", ret);
- onError(tcpsocket, -1 );
+ //onError(tcpsocket, -1 );
}
else {
_error = ret;
}
- return -1;
+ return ret;
}
return ret;
@@ -172,7 +167,10 @@
// Save the hostname and port on first connect
// Create the socket
if (tcpsocket == NULL)
+ {
+ printf("Creating TCP socket ...\r\n");
tcpsocket = new TCPSocket(network);
+ }
if (tcpsocket == NULL)
ret = -1;
--- a/main.cpp Fri Mar 17 08:42:29 2017 +0000
+++ b/main.cpp Sat Mar 18 01:54:50 2017 +0000
@@ -103,6 +103,7 @@
"KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==\n"
"-----END CERTIFICATE-----";
+Serial pc(USBTX, USBRX, 115200);
int arrivedcount = 0;
Thread thdMQTT;
@@ -118,8 +119,8 @@
void messageArrived(MQTT::MessageData& md)
{
MQTT::Message &message = md.message;
- printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
- printf("Payload %.*s\r\n", message.payloadlen, (char*)message.payload);
+ pc.printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
+ pc.printf("Payload %.*s\r\n", message.payloadlen, (char*)message.payload);
++arrivedcount;
}
@@ -130,33 +131,33 @@
{
int rc;
- printf("Connecting to %s:%d\r\n", hostname, port);
+ pc.printf("Connecting to %s:%d\r\n", hostname, port);
rc = mqttNetwork.connect(hostname, port);
if (rc != 0)
{
- printf("rc from TCP connect is %d\r\n", rc);
+ pc.printf("rc from TCP connect is %d\r\n", rc);
return -1;
}
else
- printf("RC passed!\r\n");
+ pc.printf("RC passed!\r\n");
- printf("Creating data connection ...\r\n");
+ pc.printf("Creating data connection ...\r\n");
MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
data.MQTTVersion = 3;
data.clientID.cstring = (char *) clientID;
data.username.cstring = (char *) username;
data.password.cstring = (char *) password;
- printf("Connecting client ...\r\n");
+ pc.printf("Connecting client ...\r\n");
if ((rc = client.connect(data)) != 0)
{
printf("rc from MQTT connect is %d\r\n", rc);
return -1;
}
- printf("Subscribing to topic ...\r\n");
+ pc.printf("Subscribing to topic ...\r\n");
if ((rc = client.subscribe(topic, MQTT::QOS2, messageArrived)) != 0)
{
- printf("rc from MQTT subscribe is %d\r\n", rc);
+ pc.printf("rc from MQTT subscribe is %d\r\n", rc);
return -1;
}
@@ -167,9 +168,9 @@
{
int rc;
- printf("Subscribing to topic ...\r\n");
+ pc.printf("Subscribing to topic ...\r\n");
if ((rc = client.subscribe(topic, os, handler)) != 0)
- printf("rc from MQTT subscribe is %d\r\n", rc);
+ pc.printf("rc from MQTT subscribe is %d\r\n", rc);
return rc;
}
@@ -183,42 +184,42 @@
*message = msg;
// Push the data to the consumer thread
- printf("Pushing data to MQTTS Listener thread ...\r\n");
+ pc.printf("Pushing data to MQTTS Listener thread ...\r\n");
queue.put(message);
}
void mqttListener(void)
{
- printf("MQTT listener thread started ...\r\n");
+ pc.printf("MQTT listener thread started ...\r\n");
while(true)
{
// Wait for data in the queue, timeout at 10ms
osEvent evt = queue.get(10);
if (evt.status == osEventMessage) {
- printf("Message arrived from main thread ...\r\n");
+ pc.printf("Message arrived from main thread ...\r\n");
// Unpack the message
MQTT::Message * message = (MQTT::Message *)evt.value.p;
- printf("Publishing message to MQTT ...\r\n");
+ pc.printf("Publishing message to MQTT ...\r\n");
// Push to mqtt
int rc = client.publish(topic, *message);
if (rc < 0)
- printf("Error sending mqtt message \r\n");
+ pc.printf("Error sending mqtt message \r\n");
else
- printf("Message published ...\r\n");
+ pc.printf("Message published ...\r\n");
// Don't forget this!
pool.free(message);
}
- printf("MQTT client yeild ...\r\n");
+ pc.printf("MQTT client yeild ...\r\n");
if (client.yield(100) != 0)
{
client.disconnect();
// TODO: reconnect TLS session.
return;
}
- printf("MQTT client yeild successful ...\r\n");
+ pc.printf("MQTT client yeild successful ...\r\n");
}
}
@@ -228,29 +229,29 @@
int i = 0;
- printf("HelloMQTT: version is %.2f\r\n", version);
+ pc.printf("HelloMQTT: version is %.2f\r\n", version);
NetworkInterface* network = easy_connect(true);
if (!network) {
return -1;
}
-
+
if ( mqttNetwork.setupTLS(network, SSL_CA_PEM) != 0 )
{
- printf("Failed initializing sercure MQTTS...\r\n");
+ pc.printf("Failed initializing sercure MQTTS...\r\n");
return -1;
}
if ( mqttsConnect("mqtt.mbedhacks.com",
8883,"mbedtest_01","tinong","tatay") != 0 )
{
- printf("Failed connecting to mqtt.mbedhacks.com:8883 \r\n");
+ pc.printf("Failed connecting to mqtt.mbedhacks.com:8883 \r\n");
return -1;
}
if ( mqttsSubscribe(topic, MQTT::QOS2, messageArrived) != 0 )
{
- printf("Failed to subscribe to a topic!\r\n");
+ pc.printf("Failed to subscribe to a topic!\r\n");
return -1;
}
@@ -281,5 +282,5 @@
//printf("Version %.2f: finish %d msgs\r\n", version, arrivedcount);
- return 0;
+ //return 0;
}
