Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: MQTTNetwork.h
- Revision:
- 18:ce12e2072cbb
- Parent:
- 5:ea9f483e0294
- Child:
- 22:d9576c025cd7
--- a/MQTTNetwork.h Tue Sep 17 23:40:07 2019 +0000 +++ b/MQTTNetwork.h Sun Oct 20 23:21:52 2019 -0400 @@ -17,6 +17,9 @@ #ifndef MQTTNetwork_H #define MQTTNetwork_H +//mbed +#include "mbed.h" + // Network related header files #include "NetworkInterface.h" #include "EthernetInterface.h" @@ -32,16 +35,16 @@ //Include certificates header #include "Certificates.h" +extern Serial pc; + namespace IoTF { //Class to represent Network layer class MQTTNetwork { private: - //Pointer member for ethernet interface - NetworkInterface* network; - + //Pointer member to represent socket - TCPSocket* socket; + TCPSocket socket; //Variable to stored server port int serverPort; @@ -53,14 +56,18 @@ mbedtls_ssl_context* _ssl; mbedtls_ssl_config* _ssl_conf; public: - //Default constructor to initialize network, mbedTLS structures + //Pointer member for ethernet interface + NetworkInterface *network; + + //Default constructor to initialize network, mbedTLS structures MQTTNetwork(): serverPort(1883){ //Instantiate new ethernet interface network = new EthernetInterface(); //Connect to ethernet interface network->connect(); //Create socket with created ethernet interface - socket = new TCPSocket(network); + //socket = new TCPSocket(network); + //TCPSocket* socket; //Instantiate mbedTLS structures _entropy = new mbedtls_entropy_context(); @@ -77,11 +84,11 @@ mbedtls_ssl_config_init(_ssl_conf); } - //Getter method to return underlying EthernetInterface - NetworkInterface* getEth() - { - return network; - } + // //Getter method to return underlying EthernetInterface + // NetworkInterface* getEth() + // { + // return network; + // } //Destructor to release the resources ~MQTTNetwork() { @@ -93,7 +100,7 @@ mbedtls_ssl_config_free(_ssl_conf); //Free the allocated memory for socket and network pointers - delete socket; + //delete socket; delete network; //Free the allocated memory for mbedTLS structures @@ -110,21 +117,24 @@ int connect(const char*host, int port){ int rc = -1; + socket.open(network); serverPort = port; if(port == 1883) //Establish unsecured socket connection - rc = socket->connect(host, port); + + rc = socket.connect(host, port); else{ //Establish secure socket connection using SSL/TLS //Perform mbedTLS initialization if((rc = initializeTLS(host)) == 0){ - if((rc = socket->connect(host, port))==0){ - printf("Socket connection to %s:%d successful...\r\n",host,port); + //if((rc = socket->connect(host, port))==0){ + if((rc = socket.connect(host, port))==0){ + pc.printf("Socket connection to %s:%d successful...\r\n",host,port); //Perform SSL handshake if ((rc = mbedtls_ssl_handshake(_ssl)) < 0) { if (rc != MBEDTLS_ERR_SSL_WANT_READ && rc != MBEDTLS_ERR_SSL_WANT_WRITE) { - printf("mbedtls_ssl_handshake failed - 0x%x\r\n", -rc); + pc.printf("mbedtls_ssl_handshake failed - 0x%x\r\n", -rc); } goto exit; } @@ -144,14 +154,14 @@ if ((rc = mbedtls_ctr_drbg_seed(_ctr_drbg, mbedtls_entropy_func, _entropy, (const unsigned char *) tlsClientName, sizeof (tlsClientName))) != 0) { - printf("mbedtls_crt_drbg_init failed - 0x%x\r\n", -rc); + pc.printf("mbedtls_crt_drbg_init failed - 0x%x\r\n", -rc); goto exit; } //Parse certificates into mbedTLS structure if ((rc = mbedtls_x509_crt_parse(_cacert, (const unsigned char *) serverCert, sizeof(serverCert))) != 0) { - printf("mbedtls_x509_crt_parse for serverCert failed - 0x%x\r\n", -rc); + pc.printf("mbedtls_x509_crt_parse for serverCert failed - 0x%x\r\n", -rc); goto exit; } @@ -160,7 +170,7 @@ MBEDTLS_SSL_IS_CLIENT, MBEDTLS_SSL_TRANSPORT_STREAM, MBEDTLS_SSL_PRESET_DEFAULT)) != 0) { - printf("mbedtls_ssl_config_defaults failed - 0x%x\r\n", -rc); + pc.printf("mbedtls_ssl_config_defaults failed - 0x%x\r\n", -rc); goto exit; } @@ -174,7 +184,7 @@ //Perform mbedTLS ssl setup if ((rc = mbedtls_ssl_setup(_ssl, _ssl_conf)) != 0) { - printf("mbedtls_ssl_setup failed - 0x%x\r\n", -rc); + pc.printf("mbedtls_ssl_setup failed - 0x%x\r\n", -rc); goto exit; } @@ -182,7 +192,7 @@ mbedtls_ssl_set_hostname(_ssl, hostName); //Set buffer I/O methods for SSL connection - mbedtls_ssl_set_bio(_ssl, static_cast<void *>(socket), + mbedtls_ssl_set_bio(_ssl, static_cast<void *>(&socket), tlsWrite, tlsRead, NULL ); exit: @@ -208,7 +218,7 @@ int rc = 0; if(serverPort == 1883) - rc = socket->recv(buffer,len); + rc = socket.recv(buffer,len); else rc = mbedtls_ssl_read(_ssl, (unsigned char *) buffer, len); @@ -220,7 +230,7 @@ int rc = 0; if(serverPort == 1883) - rc = socket->send(buffer,len); + rc = socket.send(buffer,len); else rc = mbedtls_ssl_write(_ssl, (const unsigned char *) buffer, len); @@ -229,7 +239,7 @@ //Method to close socket connection void disconnect(){ - socket->close(); + socket.close(); } };