My fork

Dependencies:   WncControllerK64F

Fork of WNCInterface by Jan Korycan

Committer:
JMF
Date:
Fri Mar 24 21:43:57 2017 +0000
Revision:
26:81e520908460
Parent:
Socket/Endpoint.cpp@9:9f0578ff157a
Child:
27:2dc9461c04dc
Changing WNC Networking Class names to be prefixed with "Wnc" so they don't collide with the standard networking classes.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JMF 1:e511ea8d39d5 1 /* =====================================================================
JMF 1:e511ea8d39d5 2 Copyright © 2016, Avnet (R)
JMF 1:e511ea8d39d5 3
JMF 1:e511ea8d39d5 4 Contributors:
JMF 1:e511ea8d39d5 5 * James M Flynn, www.em.avnet.com
JMF 1:e511ea8d39d5 6
JMF 1:e511ea8d39d5 7 Licensed under the Apache License, Version 2.0 (the "License");
JMF 1:e511ea8d39d5 8 you may not use this file except in compliance with the License.
JMF 1:e511ea8d39d5 9 You may obtain a copy of the License at
JMF 1:e511ea8d39d5 10
JMF 1:e511ea8d39d5 11 http://www.apache.org/licenses/LICENSE-2.0
JMF 1:e511ea8d39d5 12
JMF 1:e511ea8d39d5 13 Unless required by applicable law or agreed to in writing,
JMF 1:e511ea8d39d5 14 software distributed under the License is distributed on an
JMF 1:e511ea8d39d5 15 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
JMF 1:e511ea8d39d5 16 either express or implied. See the License for the specific
JMF 1:e511ea8d39d5 17 language governing permissions and limitations under the License.
JMF 1:e511ea8d39d5 18
JMF 1:e511ea8d39d5 19 @file WNCInterface.cpp
JMF 1:e511ea8d39d5 20 @version 1.0
JMF 1:e511ea8d39d5 21 @date Sept 2016
JMF 1:e511ea8d39d5 22
JMF 1:e511ea8d39d5 23 ======================================================================== */
JMF 1:e511ea8d39d5 24
JMF 1:e511ea8d39d5 25 #include "../WNCInterface.h"
JMF 26:81e520908460 26 #include "WncSocket.h"
JMF 26:81e520908460 27 #include "WncEndpoint.h"
JMF 1:e511ea8d39d5 28
JMF 1:e511ea8d39d5 29 Endpoint::Endpoint() {
JMF 1:e511ea8d39d5 30 reset_address();
JMF 1:e511ea8d39d5 31 }
JMF 1:e511ea8d39d5 32
JMF 1:e511ea8d39d5 33 Endpoint::~Endpoint() {}
JMF 1:e511ea8d39d5 34
JMF 1:e511ea8d39d5 35 void Endpoint::reset_address(void) {
JMF 1:e511ea8d39d5 36 std::memset(&_epAddr, 0, sizeof(struct EndPointAddr));
JMF 1:e511ea8d39d5 37 }
JMF 1:e511ea8d39d5 38
JMF 1:e511ea8d39d5 39 //
JMF 1:e511ea8d39d5 40 // It is possible to call set_address with either a URL or
JMF 1:e511ea8d39d5 41 // an IP address. So try each in-turn and set the end point
JMF 1:e511ea8d39d5 42 // address.
JMF 1:e511ea8d39d5 43 //
JMF 1:e511ea8d39d5 44
JMF 1:e511ea8d39d5 45 int Endpoint::set_address(const char* host, const int port) {
JMF 1:e511ea8d39d5 46 // IP Address
JMF 1:e511ea8d39d5 47 char address[5];
JMF 1:e511ea8d39d5 48 int rslt;
JMF 1:e511ea8d39d5 49
JMF 9:9f0578ff157a 50 CHK_WNCFE(( WNCInterface::_pwnc->getWncStatus() == FATAL_FLAG ), fail);
JMF 1:e511ea8d39d5 51
JMF 1:e511ea8d39d5 52 reset_address();
JMF 1:e511ea8d39d5 53 _epAddr.port = port; //go ahead and save the port
JMF 1:e511ea8d39d5 54
JMF 1:e511ea8d39d5 55 // Dot-decimal notation?
JMF 1:e511ea8d39d5 56 rslt = std::sscanf(host, "%3u.%3u.%3u.%3u",
JMF 1:e511ea8d39d5 57 (unsigned int*)&address[0], (unsigned int*)&address[1],
JMF 1:e511ea8d39d5 58 (unsigned int*)&address[2], (unsigned int*)&address[3]);
JMF 1:e511ea8d39d5 59
JMF 7:fded23f50479 60 M_LOCK;
JMF 1:e511ea8d39d5 61 if (rslt != 4) // No, need to resolve address with DNS
JMF 1:e511ea8d39d5 62 WNCInterface::_pwnc->resolveUrl(0,host);
JMF 1:e511ea8d39d5 63 else
JMF 1:e511ea8d39d5 64 WNCInterface::_pwnc->setIpAddr(0,host);
JMF 1:e511ea8d39d5 65
JMF 1:e511ea8d39d5 66 rslt = WNCInterface::_pwnc->getIpAddr(0,_epAddr.IP);
JMF 7:fded23f50479 67 M_ULOCK;
JMF 7:fded23f50479 68 return rslt;
JMF 1:e511ea8d39d5 69 }
JMF 1:e511ea8d39d5 70
JMF 1:e511ea8d39d5 71 char* Endpoint::get_address() {
JMF 1:e511ea8d39d5 72 return _epAddr.IP;
JMF 1:e511ea8d39d5 73 }
JMF 1:e511ea8d39d5 74
JMF 1:e511ea8d39d5 75 int Endpoint::get_port() {
JMF 1:e511ea8d39d5 76 return _epAddr.port;
JMF 1:e511ea8d39d5 77 }
JMF 1:e511ea8d39d5 78