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.
Dependencies: WncControllerK64F
Dependents: WNCProximityMqtt Pubnub_ATT_IoT_SK_WNC_sync BluemixDemo BluemixQS ... more
See the WNCInterface README in the Wiki tab for detailed information on this library.
Diff: Socket/WncEndpoint.cpp
- Revision:
- 26:81e520908460
- Parent:
- 9:9f0578ff157a
- Child:
- 27:2dc9461c04dc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Socket/WncEndpoint.cpp Fri Mar 24 21:43:57 2017 +0000
@@ -0,0 +1,78 @@
+/* =====================================================================
+ 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"
+
+Endpoint::Endpoint() {
+ reset_address();
+}
+
+Endpoint::~Endpoint() {}
+
+void Endpoint::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 Endpoint::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* Endpoint::get_address() {
+ return _epAddr.IP;
+}
+
+int Endpoint::get_port() {
+ return _epAddr.port;
+}
+

