WIZnet / Mbed 2 deprecated WizFi310_Legacy_HelloWorld

Dependencies:   WizFi310Interface_Legacy mbed

Prerequisite

This example shows that WIZwiki-W7500 and WizFi310 connects to AP.

To implement this function, you need a Platform board and Wi-Fi board. Below are what we used.

  • WIZwiki-W7500 from WIZnet (Platform board)
  • WizFi310 from WIZnet (Wi-Fi board)

Hardware Configuration

WIZwiki-W7500 Pin map

pin map

  • D0 is for RXD, D1 is for TXD
  • D6 is for CTS, D7 is for RTS
  • D9 is for RESET

WizFi310 Pin map

pin map

  • J1 is for RXD, J3 is for TXD
  • SW6-1 is connected to D6 for RTS, SW6-2 is connected to D7 for CTS
  • SW5-3 is connected to D9 for RESET

Software

Connect to Wi-Fi

main.cpp

if ( wizfi310.connect(SECURE, SSID, PASS))      return -1;

Caution

Input a SSID/PW to connect to an AP.

Committer:
kaizen
Date:
Wed Apr 19 00:30:02 2017 +0000
Revision:
0:851ac97c4b05
WizFi310_HelloWorld using Legacy Library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kaizen 0:851ac97c4b05 1 /*
kaizen 0:851ac97c4b05 2 * Copyright (C) 2013 gsfan, MIT License
kaizen 0:851ac97c4b05 3 *
kaizen 0:851ac97c4b05 4 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
kaizen 0:851ac97c4b05 5 * and associated documentation files (the "Software"), to deal in the Software without restriction,
kaizen 0:851ac97c4b05 6 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
kaizen 0:851ac97c4b05 7 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
kaizen 0:851ac97c4b05 8 * furnished to do so, subject to the following conditions:
kaizen 0:851ac97c4b05 9 *
kaizen 0:851ac97c4b05 10 * The above copyright notice and this permission notice shall be included in all copies or
kaizen 0:851ac97c4b05 11 * substantial portions of the Software.
kaizen 0:851ac97c4b05 12 *
kaizen 0:851ac97c4b05 13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
kaizen 0:851ac97c4b05 14 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
kaizen 0:851ac97c4b05 15 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
kaizen 0:851ac97c4b05 16 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
kaizen 0:851ac97c4b05 17 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
kaizen 0:851ac97c4b05 18 */
kaizen 0:851ac97c4b05 19 /* Copyright (C) 2014 Wiznet, MIT License
kaizen 0:851ac97c4b05 20 * port to the Wiznet Module WizFi250
kaizen 0:851ac97c4b05 21 */
kaizen 0:851ac97c4b05 22 /* Copyright (C) 2017 Wiznet, MIT License
kaizen 0:851ac97c4b05 23 * port to the Wiznet Module WizFi310
kaizen 0:851ac97c4b05 24 */
kaizen 0:851ac97c4b05 25
kaizen 0:851ac97c4b05 26 #include "UDPSocket.h"
kaizen 0:851ac97c4b05 27
kaizen 0:851ac97c4b05 28 #include <string>
kaizen 0:851ac97c4b05 29 #include <algorithm>
kaizen 0:851ac97c4b05 30
kaizen 0:851ac97c4b05 31 UDPSocket::UDPSocket()
kaizen 0:851ac97c4b05 32 {
kaizen 0:851ac97c4b05 33 endpoint_connected = false;
kaizen 0:851ac97c4b05 34 }
kaizen 0:851ac97c4b05 35
kaizen 0:851ac97c4b05 36 int UDPSocket::init(void)
kaizen 0:851ac97c4b05 37 {
kaizen 0:851ac97c4b05 38 _server = false;
kaizen 0:851ac97c4b05 39 return 0;
kaizen 0:851ac97c4b05 40 }
kaizen 0:851ac97c4b05 41
kaizen 0:851ac97c4b05 42 // Server initialization
kaizen 0:851ac97c4b05 43 int UDPSocket::bind(int port)
kaizen 0:851ac97c4b05 44 {
kaizen 0:851ac97c4b05 45 if(port == 0)
kaizen 0:851ac97c4b05 46 {
kaizen 0:851ac97c4b05 47 _port = 5000;
kaizen 0:851ac97c4b05 48 _server = false;
kaizen 0:851ac97c4b05 49 }
kaizen 0:851ac97c4b05 50 else
kaizen 0:851ac97c4b05 51 {
kaizen 0:851ac97c4b05 52 _port = port;
kaizen 0:851ac97c4b05 53 _server = true;
kaizen 0:851ac97c4b05 54 }
kaizen 0:851ac97c4b05 55
kaizen 0:851ac97c4b05 56 return 0;
kaizen 0:851ac97c4b05 57 }
kaizen 0:851ac97c4b05 58
kaizen 0:851ac97c4b05 59 int UDPSocket::sendTo(Endpoint &remote, char *packet, int length)
kaizen 0:851ac97c4b05 60 {
kaizen 0:851ac97c4b05 61 Timer tmr;
kaizen 0:851ac97c4b05 62 int idx = 0;
kaizen 0:851ac97c4b05 63
kaizen 0:851ac97c4b05 64 if (_cid < 0 && _wizfi310->isAssociated())
kaizen 0:851ac97c4b05 65 {
kaizen 0:851ac97c4b05 66 if (_server)
kaizen 0:851ac97c4b05 67 {
kaizen 0:851ac97c4b05 68 _cid = _wizfi310->listen(WizFi310::PROTO_UDP, _port);
kaizen 0:851ac97c4b05 69 }
kaizen 0:851ac97c4b05 70 else
kaizen 0:851ac97c4b05 71 {
kaizen 0:851ac97c4b05 72 _cid = _wizfi310->open(WizFi310::PROTO_UDP, remote.get_address(), remote.get_port(), _port);
kaizen 0:851ac97c4b05 73 }
kaizen 0:851ac97c4b05 74 if (_cid < 0) return -1;
kaizen 0:851ac97c4b05 75 }
kaizen 0:851ac97c4b05 76
kaizen 0:851ac97c4b05 77 tmr.start();
kaizen 0:851ac97c4b05 78
kaizen 0:851ac97c4b05 79 while ((tmr.read_ms() < _timeout) || _blocking)
kaizen 0:851ac97c4b05 80 {
kaizen 0:851ac97c4b05 81 if(_server)
kaizen 0:851ac97c4b05 82 {
kaizen 0:851ac97c4b05 83 idx += _wizfi310->sendto(_cid, packet, length, remote.get_address(), remote.get_port());
kaizen 0:851ac97c4b05 84 }
kaizen 0:851ac97c4b05 85 else
kaizen 0:851ac97c4b05 86 {
kaizen 0:851ac97c4b05 87 idx += _wizfi310->send(_cid, packet, length);
kaizen 0:851ac97c4b05 88 }
kaizen 0:851ac97c4b05 89 if (idx < 0)
kaizen 0:851ac97c4b05 90 {
kaizen 0:851ac97c4b05 91 if (!_wizfi310->isConnected(_cid)) _cid = -1;
kaizen 0:851ac97c4b05 92 }
kaizen 0:851ac97c4b05 93
kaizen 0:851ac97c4b05 94 if (idx == length)
kaizen 0:851ac97c4b05 95 return idx;
kaizen 0:851ac97c4b05 96 }
kaizen 0:851ac97c4b05 97 return (idx == 0) ? -1 : idx;
kaizen 0:851ac97c4b05 98 }
kaizen 0:851ac97c4b05 99
kaizen 0:851ac97c4b05 100
kaizen 0:851ac97c4b05 101 int UDPSocket::receiveFrom(Endpoint &remote, char *buffer, int length)
kaizen 0:851ac97c4b05 102 {
kaizen 0:851ac97c4b05 103 Timer tmr;
kaizen 0:851ac97c4b05 104 int idx = 0;
kaizen 0:851ac97c4b05 105 int time = -1;
kaizen 0:851ac97c4b05 106 char ip[16];
kaizen 0:851ac97c4b05 107 int port;
kaizen 0:851ac97c4b05 108
kaizen 0:851ac97c4b05 109 if(_cid < 0 && _wizfi310->isAssociated())
kaizen 0:851ac97c4b05 110 {
kaizen 0:851ac97c4b05 111 // Socket open
kaizen 0:851ac97c4b05 112 if (_server) {
kaizen 0:851ac97c4b05 113 _cid = _wizfi310->listen(WizFi310::PROTO_UDP, _port);
kaizen 0:851ac97c4b05 114 //WIZ_DBG("TEST CID : %d",_cid);
kaizen 0:851ac97c4b05 115 }
kaizen 0:851ac97c4b05 116 else
kaizen 0:851ac97c4b05 117 {
kaizen 0:851ac97c4b05 118 _cid = _wizfi310->open(WizFi310::PROTO_UDP, remote.get_address(), remote.get_port(), _port);
kaizen 0:851ac97c4b05 119 }
kaizen 0:851ac97c4b05 120 if (_cid < 0) return -1;
kaizen 0:851ac97c4b05 121 }
kaizen 0:851ac97c4b05 122
kaizen 0:851ac97c4b05 123 if (_blocking)
kaizen 0:851ac97c4b05 124 {
kaizen 0:851ac97c4b05 125 tmr.start();
kaizen 0:851ac97c4b05 126 while (time < _timeout + 20)
kaizen 0:851ac97c4b05 127 {
kaizen 0:851ac97c4b05 128 if(_wizfi310->readable(_cid))
kaizen 0:851ac97c4b05 129 {
kaizen 0:851ac97c4b05 130 break;
kaizen 0:851ac97c4b05 131 }
kaizen 0:851ac97c4b05 132 time = tmr.read_ms();
kaizen 0:851ac97c4b05 133 }
kaizen 0:851ac97c4b05 134 if (time >= _timeout + 20)
kaizen 0:851ac97c4b05 135 {
kaizen 0:851ac97c4b05 136 return -1;
kaizen 0:851ac97c4b05 137 }
kaizen 0:851ac97c4b05 138 }
kaizen 0:851ac97c4b05 139 else
kaizen 0:851ac97c4b05 140 {
kaizen 0:851ac97c4b05 141 if(!_wizfi310->readable(_cid))
kaizen 0:851ac97c4b05 142 {
kaizen 0:851ac97c4b05 143 return 0;
kaizen 0:851ac97c4b05 144 }
kaizen 0:851ac97c4b05 145 }
kaizen 0:851ac97c4b05 146
kaizen 0:851ac97c4b05 147
kaizen 0:851ac97c4b05 148 tmr.reset();
kaizen 0:851ac97c4b05 149 time = -1;
kaizen 0:851ac97c4b05 150 tmr.start();
kaizen 0:851ac97c4b05 151
kaizen 0:851ac97c4b05 152 while (time < _timeout)
kaizen 0:851ac97c4b05 153 {
kaizen 0:851ac97c4b05 154 if(_server)
kaizen 0:851ac97c4b05 155 {
kaizen 0:851ac97c4b05 156 idx += _wizfi310->recvfrom(_cid, &buffer[idx], length - idx, ip, &port);
kaizen 0:851ac97c4b05 157 }
kaizen 0:851ac97c4b05 158 else
kaizen 0:851ac97c4b05 159 {
kaizen 0:851ac97c4b05 160 //idx += _wizfi250->recv(_cid, &buffer[idx], length - idx);
kaizen 0:851ac97c4b05 161 idx += _wizfi310->recvfrom(_cid, &buffer[idx], length - idx, ip, &port);
kaizen 0:851ac97c4b05 162 }
kaizen 0:851ac97c4b05 163
kaizen 0:851ac97c4b05 164 if (idx == length)
kaizen 0:851ac97c4b05 165 break;
kaizen 0:851ac97c4b05 166
kaizen 0:851ac97c4b05 167
kaizen 0:851ac97c4b05 168 time = tmr.read_ms();
kaizen 0:851ac97c4b05 169 }
kaizen 0:851ac97c4b05 170
kaizen 0:851ac97c4b05 171 remote.set_address(ip, port);
kaizen 0:851ac97c4b05 172 return (idx==0) ? -1 : idx;
kaizen 0:851ac97c4b05 173 }