Henry Leinen / WifiPlusClick

Dependents:   WifiPlusKlickExample

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers UDPSocket.cpp Source File

UDPSocket.cpp

00001 /* Copyright (c) 2013 Henry Leinen (henry[dot]leinen [at] online [dot] de)
00002  *
00003  * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
00004  * and associated documentation files (the "Software"), to deal in the Software without restriction,
00005  * including without limitation the rights to use, copy, modify, merge, publish, distribute,
00006  * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
00007  * furnished to do so, subject to the following conditions:
00008  *
00009  * The above copyright notice and this permission notice shall be included in all copies or
00010  * substantial portions of the Software.
00011  *
00012  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
00013  * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
00014  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
00015  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00016  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00017  */
00018 #include "mbed.h"
00019 #include "Socket/UDPSocket.h"
00020 
00021 
00022 
00023 UDPSocket::UDPSocket()
00024 {
00025 }
00026 
00027 int UDPSocket::init()
00028 {
00029     _socket = Wifi::getInstance()->SocketCreate(UDP);
00030     
00031     if (_socket == InvalidSocketHandle)
00032         return -1;
00033     
00034     return 0;
00035 }
00036 
00037 int UDPSocket::bind(unsigned int port)
00038 {
00039     _socket = Wifi::getInstance()->SocketCreate(UDP);
00040     
00041     if (_socket == InvalidSocketHandle)
00042         return -1;
00043         
00044     if (!Wifi::getInstance()->SocketBind(_socket, port)) {
00045         close();
00046         return -1;
00047     }
00048     
00049     return 0;
00050 }
00051 
00052 int UDPSocket::sendTo(Endpoint &remote, char *packet, int length)
00053 {
00054     if (_socket == InvalidSocketHandle)
00055         return -1;
00056     if (packet == NULL) 
00057         return -1;
00058         
00059     return Wifi::getInstance()->SocketSendTo(_socket, &remote._ipAddress, remote._port, packet, length);
00060 }
00061 
00062 int UDPSocket::receiveFrom(Endpoint &remote, char *packet, int length)
00063 {
00064     if (_socket == InvalidSocketHandle)
00065         return -1;
00066     if (packet == NULL)
00067         return -1;
00068 
00069     return Wifi::getInstance()->SocketRecvFrom(_socket, &remote._ipAddress, &remote._port, packet, length);
00070 }