AWS IoT demonstration using the Avnet Shield (AT&T LTE) and the FRDM-K64F target board.

Dependencies:   K64F_FATFileSystem

Fork of mbed-os-example-tls-tls-client by mbed-os-examples

Revision:
15:6f2798e45099
diff -r 339320b096c5 -r 6f2798e45099 WNCInterface/WNCSocket/WNCEndpoint.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WNCInterface/WNCSocket/WNCEndpoint.cpp	Thu Dec 01 18:05:38 2016 +0000
@@ -0,0 +1,79 @@
+/* =====================================================================
+   Copyright © 2016, Avnet (R)
+
+   Contributors:
+     * James M Flynn, www.em.avnet.com 
+ 
+   Licensed under the Apache License, Version 2.0 (the "License"); 
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, 
+   software distributed under the License is distributed on an 
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
+   either express or implied. See the License for the specific 
+   language governing permissions and limitations under the License.
+
+    @file          WNCInterface.cpp
+    @version       1.0
+    @date          Sept 2016
+
+======================================================================== */
+
+#include "../WNCInterface.h"
+#include "WNCSocket.h"
+#include "WNCEndpoint.h"
+
+WNCEndpoint::WNCEndpoint()  {
+    reset_address();
+}
+
+WNCEndpoint::~WNCEndpoint() {}
+
+void WNCEndpoint::reset_address(void) {
+    std::memset(&_epAddr, 0, sizeof(struct EndPointAddr));
+}
+
+//
+// It is possible to call set_address with either a URL or
+// an IP address.  So try each in-turn and set the end point
+// address.
+//
+
+int WNCEndpoint::set_address(const char* host, const int port) {
+     // IP Address
+    char address[5];
+    int rslt;
+
+   CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), fail);
+
+   reset_address();
+    _epAddr.port = port;  //go ahead and save the port 
+    
+    // Dot-decimal notation?
+    rslt = std::sscanf(host, "%3u.%3u.%3u.%3u",
+            (unsigned int*)&address[0], (unsigned int*)&address[1],
+            (unsigned int*)&address[2], (unsigned int*)&address[3]);
+
+    M_LOCK;
+    if (rslt != 4)    // No, need to resolve address with DNS
+        WNCInterface::_pwnc->resolveUrl(0,host);
+    else
+        WNCInterface::_pwnc->setIpAddr(0,host);
+    
+    rslt = WNCInterface::_pwnc->getIpAddr(0,_epAddr.IP);
+    M_ULOCK;
+    return rslt;
+}
+
+char* WNCEndpoint::get_address() {
+    return _epAddr.IP;
+}
+
+int   WNCEndpoint::get_port() {
+    return _epAddr.port;
+}
+
+