add getsock(), setsock()

Fork of WIZnetInterface by IOP

Committer:
Soohwan Kim
Date:
Mon Jun 15 22:39:51 2015 +0900
Revision:
5:f432ae8f8708
Parent:
4:4930f81bbe98
Child:
6:94a81e80c675
amend

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Soohwan Kim 0:6f28332c466f 1 /* Copyright (C) 2012 mbed.org, MIT License
Soohwan Kim 0:6f28332c466f 2 *
Soohwan Kim 0:6f28332c466f 3 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
Soohwan Kim 0:6f28332c466f 4 * and associated documentation files (the "Software"), to deal in the Software without restriction,
Soohwan Kim 0:6f28332c466f 5 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
Soohwan Kim 0:6f28332c466f 6 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
Soohwan Kim 0:6f28332c466f 7 * furnished to do so, subject to the following conditions:
Soohwan Kim 0:6f28332c466f 8 *
Soohwan Kim 0:6f28332c466f 9 * The above copyright notice and this permission notice shall be included in all copies or
Soohwan Kim 0:6f28332c466f 10 * substantial portions of the Software.
Soohwan Kim 0:6f28332c466f 11 *
Soohwan Kim 0:6f28332c466f 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
Soohwan Kim 0:6f28332c466f 13 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
Soohwan Kim 0:6f28332c466f 14 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
Soohwan Kim 0:6f28332c466f 15 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
Soohwan Kim 0:6f28332c466f 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Soohwan Kim 0:6f28332c466f 17 *
Soohwan Kim 0:6f28332c466f 18 */
Soohwan Kim 0:6f28332c466f 19
Soohwan Kim 0:6f28332c466f 20 #pragma once
Soohwan Kim 0:6f28332c466f 21
Soohwan Kim 0:6f28332c466f 22 #include "mbed.h"
Soohwan Kim 0:6f28332c466f 23 #include "mbed_debug.h"
Soohwan Kim 0:6f28332c466f 24
Soohwan Kim 0:6f28332c466f 25 #define TEST_ASSERT(A) while(!(A)){debug("\n\n%s@%d %s ASSERT!\n\n",__PRETTY_FUNCTION__,__LINE__,#A);exit(1);};
Soohwan Kim 0:6f28332c466f 26
Soohwan Kim 0:6f28332c466f 27 #define DEFAULT_WAIT_RESP_TIMEOUT 500
Soohwan Kim 0:6f28332c466f 28
Soohwan Kim 0:6f28332c466f 29
Soohwan Kim 0:6f28332c466f 30
Soohwan Kim 4:4930f81bbe98 31
Soohwan Kim 4:4930f81bbe98 32 #define SOCK_ERROR 0
Soohwan Kim 4:4930f81bbe98 33 #define SOCKERR_SOCKNUM (SOCK_ERROR - 1) ///< Invalid socket number
Soohwan Kim 4:4930f81bbe98 34 #define SOCKERR_SOCKOPT (SOCK_ERROR - 2) ///< Invalid socket option
Soohwan Kim 4:4930f81bbe98 35 #define SOCKERR_SOCKINIT (SOCK_ERROR - 3) ///< Socket is not initialized
Soohwan Kim 4:4930f81bbe98 36 #define SOCKERR_SOCKCLOSED (SOCK_ERROR - 4) ///< Socket unexpectedly closed.
Soohwan Kim 4:4930f81bbe98 37 #define SOCKERR_SOCKMODE (SOCK_ERROR - 5) ///< Invalid socket mode for socket operation.
Soohwan Kim 4:4930f81bbe98 38 #define SOCKERR_SOCKFLAG (SOCK_ERROR - 6) ///< Invalid socket flag
Soohwan Kim 4:4930f81bbe98 39 #define SOCKERR_SOCKSTATUS (SOCK_ERROR - 7) ///< Invalid socket status for socket operation.
Soohwan Kim 4:4930f81bbe98 40 #define SOCKERR_ARG (SOCK_ERROR - 10) ///< Invalid argrument.
Soohwan Kim 4:4930f81bbe98 41 #define SOCKERR_PORTZERO (SOCK_ERROR - 11) ///< Port number is zero
Soohwan Kim 4:4930f81bbe98 42 #define SOCKERR_IPINVALID (SOCK_ERROR - 12) ///< Invalid IP address
Soohwan Kim 4:4930f81bbe98 43 #define SOCKERR_TIMEOUT (SOCK_ERROR - 13) ///< Timeout occurred
Soohwan Kim 4:4930f81bbe98 44 #define SOCKERR_DATALEN (SOCK_ERROR - 14) ///< Data length is zero or greater than buffer max size.
Soohwan Kim 4:4930f81bbe98 45 #define SOCKERR_BUFFER (SOCK_ERROR - 15) ///< Socket buffer is not enough for data communication.
Soohwan Kim 4:4930f81bbe98 46
Soohwan Kim 4:4930f81bbe98 47 #define SOCK_ANY_PORT_NUM 0xC000;
Soohwan Kim 4:4930f81bbe98 48
Soohwan Kim 0:6f28332c466f 49
Soohwan Kim 0:6f28332c466f 50 #define MAX_SOCK_NUM 8
Soohwan Kim 0:6f28332c466f 51
Soohwan Kim 0:6f28332c466f 52 #define MR 0x0000
Soohwan Kim 0:6f28332c466f 53 #define GAR 0x0001
Soohwan Kim 0:6f28332c466f 54 #define SUBR 0x0005
Soohwan Kim 0:6f28332c466f 55 #define SHAR 0x0009
Soohwan Kim 0:6f28332c466f 56 #define SIPR 0x000f
Soohwan Kim 4:4930f81bbe98 57 #define INTLEVEL 0x0013
Soohwan Kim 4:4930f81bbe98 58 #define IR 0x0015
Soohwan Kim 4:4930f81bbe98 59 #define IMR 0x0016
Soohwan Kim 4:4930f81bbe98 60 #define SIR 0x0017
Soohwan Kim 4:4930f81bbe98 61 #define SIMR 0x0018
Soohwan Kim 4:4930f81bbe98 62 #define RTR 0x0019
Soohwan Kim 4:4930f81bbe98 63 #define RCR 0x001b
Soohwan Kim 4:4930f81bbe98 64 #define UIPR 0x0028
Soohwan Kim 4:4930f81bbe98 65 #define UPORTR 0x002c
Soohwan Kim 4:4930f81bbe98 66 #define PHYCFGR 0x002e
Soohwan Kim 0:6f28332c466f 67
Soohwan Kim 0:6f28332c466f 68 // W5500 socket register
Soohwan Kim 0:6f28332c466f 69 #define Sn_MR 0x0000
Soohwan Kim 0:6f28332c466f 70 #define Sn_CR 0x0001
Soohwan Kim 0:6f28332c466f 71 #define Sn_IR 0x0002
Soohwan Kim 0:6f28332c466f 72 #define Sn_SR 0x0003
Soohwan Kim 0:6f28332c466f 73 #define Sn_PORT 0x0004
Soohwan Kim 4:4930f81bbe98 74 #define Sn_DHAR 0x0006
Soohwan Kim 0:6f28332c466f 75 #define Sn_DIPR 0x000c
Soohwan Kim 0:6f28332c466f 76 #define Sn_DPORT 0x0010
Soohwan Kim 0:6f28332c466f 77 #define Sn_RXBUF_SIZE 0x001e
Soohwan Kim 0:6f28332c466f 78 #define Sn_TXBUF_SIZE 0x001f
Soohwan Kim 0:6f28332c466f 79 #define Sn_TX_FSR 0x0020
Soohwan Kim 4:4930f81bbe98 80 #define Sn_TX_RD 0x0022
Soohwan Kim 0:6f28332c466f 81 #define Sn_TX_WR 0x0024
Soohwan Kim 0:6f28332c466f 82 #define Sn_RX_RSR 0x0026
Soohwan Kim 0:6f28332c466f 83 #define Sn_RX_RD 0x0028
Soohwan Kim 4:4930f81bbe98 84 #define Sn_RX_WR 0x002a
Soohwan Kim 4:4930f81bbe98 85 #define Sn_IMR 0x002c
Soohwan Kim 4:4930f81bbe98 86
Soohwan Kim 4:4930f81bbe98 87
Soohwan Kim 4:4930f81bbe98 88 //Define for Socket Command register option value
Soohwan Kim 4:4930f81bbe98 89 #define Sn_CR_OPEN 0x01
Soohwan Kim 4:4930f81bbe98 90 #define Sn_CR_LISTEN 0x02
Soohwan Kim 4:4930f81bbe98 91 #define Sn_CR_CONNECT 0x04
Soohwan Kim 4:4930f81bbe98 92 #define Sn_CR_DISCON 0x08
Soohwan Kim 4:4930f81bbe98 93 #define Sn_CR_CLOSE 0x10
Soohwan Kim 4:4930f81bbe98 94 #define Sn_CR_SEND 0x20
Soohwan Kim 4:4930f81bbe98 95 #define Sn_CR_SEND_MAC 0x21
Soohwan Kim 4:4930f81bbe98 96 #define Sn_CR_SEND_KEEP 0x22
Soohwan Kim 4:4930f81bbe98 97 #define Sn_CR_RECV 0x40
Soohwan Kim 4:4930f81bbe98 98
Soohwan Kim 4:4930f81bbe98 99
Soohwan Kim 4:4930f81bbe98 100 //Define for Socket Mode register option value
Soohwan Kim 4:4930f81bbe98 101 #define Sn_MR_CLOSE 0x00
Soohwan Kim 4:4930f81bbe98 102 #define Sn_MR_TCP 0x01
Soohwan Kim 4:4930f81bbe98 103 #define Sn_MR_UDP 0x02
Soohwan Kim 4:4930f81bbe98 104 #define Sn_MR_MACRAW 0x04
Soohwan Kim 4:4930f81bbe98 105 #define Sn_MR_UCASTB 0x10
Soohwan Kim 4:4930f81bbe98 106 #define Sn_MR_ND 0x20
Soohwan Kim 4:4930f81bbe98 107 #define Sn_MR_BCASTB 0x40
Soohwan Kim 4:4930f81bbe98 108 #define Sn_MR_MULTI 0x80
Soohwan Kim 4:4930f81bbe98 109
Soohwan Kim 4:4930f81bbe98 110 #define Sn_IR_SENDOK 0x10
Soohwan Kim 4:4930f81bbe98 111
Soohwan Kim 4:4930f81bbe98 112 //Sn_IR values
Soohwan Kim 4:4930f81bbe98 113
Soohwan Kim 4:4930f81bbe98 114 #define Sn_IR_TIMEOUT 0x08
Soohwan Kim 4:4930f81bbe98 115 #define Sn_IR_RECV 0x04
Soohwan Kim 4:4930f81bbe98 116 #define Sn_IR_DISCON 0x02
Soohwan Kim 4:4930f81bbe98 117 #define Sn_IR_CON 0x01
Soohwan Kim 4:4930f81bbe98 118
Soohwan Kim 4:4930f81bbe98 119
Soohwan Kim 4:4930f81bbe98 120
Soohwan Kim 4:4930f81bbe98 121 /* PHYCFGR register value */
Soohwan Kim 4:4930f81bbe98 122 #define PHYCFGR_RST ~(1<<7) //< For PHY reset, must operate AND mask.
Soohwan Kim 4:4930f81bbe98 123 #define PHYCFGR_OPMD (1<<6) // Configre PHY with OPMDC value
Soohwan Kim 4:4930f81bbe98 124 #define PHYCFGR_OPMDC_ALLA (7<<3)
Soohwan Kim 4:4930f81bbe98 125 #define PHYCFGR_OPMDC_PDOWN (6<<3)
Soohwan Kim 4:4930f81bbe98 126 #define PHYCFGR_OPMDC_NA (5<<3)
Soohwan Kim 4:4930f81bbe98 127 #define PHYCFGR_OPMDC_100FA (4<<3)
Soohwan Kim 4:4930f81bbe98 128 #define PHYCFGR_OPMDC_100F (3<<3)
Soohwan Kim 4:4930f81bbe98 129 #define PHYCFGR_OPMDC_100H (2<<3)
Soohwan Kim 4:4930f81bbe98 130 #define PHYCFGR_OPMDC_10F (1<<3)
Soohwan Kim 4:4930f81bbe98 131 #define PHYCFGR_OPMDC_10H (0<<3)
Soohwan Kim 4:4930f81bbe98 132 #define PHYCFGR_DPX_FULL (1<<2)
Soohwan Kim 4:4930f81bbe98 133 #define PHYCFGR_DPX_HALF (0<<2)
Soohwan Kim 4:4930f81bbe98 134 #define PHYCFGR_SPD_100 (1<<1)
Soohwan Kim 4:4930f81bbe98 135 #define PHYCFGR_SPD_10 (0<<1)
Soohwan Kim 4:4930f81bbe98 136 #define PHYCFGR_LNK_ON (1<<0)
Soohwan Kim 4:4930f81bbe98 137 #define PHYCFGR_LNK_OFF (0<<0)
Soohwan Kim 4:4930f81bbe98 138
Soohwan Kim 4:4930f81bbe98 139 //PHY status define
Soohwan Kim 4:4930f81bbe98 140 #define PHY_CONFBY_HW 0 ///< Configured PHY operation mode by HW pin
Soohwan Kim 4:4930f81bbe98 141 #define PHY_CONFBY_SW 1 ///< Configured PHY operation mode by SW register
Soohwan Kim 4:4930f81bbe98 142 #define PHY_MODE_MANUAL 0 ///< Configured PHY operation mode with user setting.
Soohwan Kim 4:4930f81bbe98 143 #define PHY_MODE_AUTONEGO 1 ///< Configured PHY operation mode with auto-negotiation
Soohwan Kim 4:4930f81bbe98 144 #define PHY_SPEED_10 0 ///< Link Speed 10
Soohwan Kim 4:4930f81bbe98 145 #define PHY_SPEED_100 1 ///< Link Speed 100
Soohwan Kim 4:4930f81bbe98 146 #define PHY_DUPLEX_HALF 0 ///< Link Half-Duplex
Soohwan Kim 4:4930f81bbe98 147 #define PHY_DUPLEX_FULL 1 ///< Link Full-Duplex
Soohwan Kim 4:4930f81bbe98 148 #define PHY_LINK_OFF 0 ///< Link Off
Soohwan Kim 4:4930f81bbe98 149 #define PHY_LINK_ON 1 ///< Link On
Soohwan Kim 4:4930f81bbe98 150 #define PHY_POWER_NORM 0 ///< PHY power normal mode
Soohwan Kim 4:4930f81bbe98 151 #define PHY_POWER_DOWN 1 ///< PHY power down mode
Soohwan Kim 0:6f28332c466f 152
Soohwan Kim 0:6f28332c466f 153 class WIZnet_Chip {
Soohwan Kim 0:6f28332c466f 154 public:
embeddist 3:f8c6efc8bf83 155 enum Protocol {
embeddist 3:f8c6efc8bf83 156 CLOSED = 0,
embeddist 3:f8c6efc8bf83 157 TCP = 1,
embeddist 3:f8c6efc8bf83 158 UDP = 2,
embeddist 3:f8c6efc8bf83 159 };
embeddist 3:f8c6efc8bf83 160
embeddist 3:f8c6efc8bf83 161 enum Command {
embeddist 3:f8c6efc8bf83 162 OPEN = 0x01,
embeddist 3:f8c6efc8bf83 163 LISTEN = 0x02,
embeddist 3:f8c6efc8bf83 164 CONNECT = 0x04,
embeddist 3:f8c6efc8bf83 165 DISCON = 0x08,
embeddist 3:f8c6efc8bf83 166 CLOSE = 0x10,
embeddist 3:f8c6efc8bf83 167 SEND = 0x20,
embeddist 3:f8c6efc8bf83 168 SEND_MAC = 0x21,
embeddist 3:f8c6efc8bf83 169 SEND_KEEP = 0x22,
embeddist 3:f8c6efc8bf83 170 RECV = 0x40,
embeddist 3:f8c6efc8bf83 171
embeddist 3:f8c6efc8bf83 172 };
embeddist 3:f8c6efc8bf83 173
embeddist 3:f8c6efc8bf83 174 enum Interrupt {
embeddist 3:f8c6efc8bf83 175 INT_CON = 0x01,
embeddist 3:f8c6efc8bf83 176 INT_DISCON = 0x02,
embeddist 3:f8c6efc8bf83 177 INT_RECV = 0x04,
embeddist 3:f8c6efc8bf83 178 INT_TIMEOUT = 0x08,
embeddist 3:f8c6efc8bf83 179 INT_SEND_OK = 0x10,
embeddist 3:f8c6efc8bf83 180 };
embeddist 3:f8c6efc8bf83 181
Soohwan Kim 5:f432ae8f8708 182 enum Status {
Soohwan Kim 5:f432ae8f8708 183 SOCK_CLOSED = 0x00,
Soohwan Kim 5:f432ae8f8708 184 SOCK_INIT = 0x13,
Soohwan Kim 5:f432ae8f8708 185 SOCK_LISTEN = 0x14,
Soohwan Kim 5:f432ae8f8708 186 SOCK_SYNSENT = 0x15,
Soohwan Kim 5:f432ae8f8708 187 SOCK_ESTABLISHED = 0x17,
Soohwan Kim 5:f432ae8f8708 188 SOCK_CLOSE_WAIT = 0x1c,
Soohwan Kim 5:f432ae8f8708 189 SOCK_UDP = 0x22,
Soohwan Kim 5:f432ae8f8708 190 };
Soohwan Kim 5:f432ae8f8708 191
Soohwan Kim 4:4930f81bbe98 192
Soohwan Kim 4:4930f81bbe98 193 uint16_t sock_any_port;
Soohwan Kim 4:4930f81bbe98 194
Soohwan Kim 0:6f28332c466f 195 /*
Soohwan Kim 0:6f28332c466f 196 * Constructor
Soohwan Kim 0:6f28332c466f 197 *
Soohwan Kim 0:6f28332c466f 198 * @param spi spi class
Soohwan Kim 0:6f28332c466f 199 * @param cs cs of the W5500
Soohwan Kim 0:6f28332c466f 200 * @param reset reset pin of the W5500
Soohwan Kim 0:6f28332c466f 201 */
Soohwan Kim 4:4930f81bbe98 202 WIZnet_Chip(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName reset);
Soohwan Kim 4:4930f81bbe98 203 WIZnet_Chip(SPI* spi, PinName cs, PinName reset);
Soohwan Kim 0:6f28332c466f 204
Soohwan Kim 0:6f28332c466f 205 /*
Soohwan Kim 4:4930f81bbe98 206 * Set MAC Address to W5500
Soohwan Kim 4:4930f81bbe98 207 *
Soohwan Kim 4:4930f81bbe98 208 * @return true if connected, false otherwise
Soohwan Kim 4:4930f81bbe98 209 */
Soohwan Kim 4:4930f81bbe98 210 bool setmac();
Soohwan Kim 4:4930f81bbe98 211
Soohwan Kim 4:4930f81bbe98 212 /*
Soohwan Kim 4:4930f81bbe98 213 * Set Network Informations (SrcIP, Netmask, Gataway)
Soohwan Kim 0:6f28332c466f 214 *
Soohwan Kim 0:6f28332c466f 215 * @return true if connected, false otherwise
Soohwan Kim 0:6f28332c466f 216 */
Soohwan Kim 0:6f28332c466f 217 bool setip();
Soohwan Kim 0:6f28332c466f 218
Soohwan Kim 0:6f28332c466f 219 /*
Soohwan Kim 4:4930f81bbe98 220 * Get Link Status
Soohwan Kim 4:4930f81bbe98 221 *
Soohwan Kim 4:4930f81bbe98 222 * @return true if Link up, false Link down
Soohwan Kim 4:4930f81bbe98 223 */
Soohwan Kim 4:4930f81bbe98 224 bool linkstatus();
Soohwan Kim 4:4930f81bbe98 225
Soohwan Kim 4:4930f81bbe98 226 /*
Soohwan Kim 0:6f28332c466f 227 * Disconnect the connection
Soohwan Kim 0:6f28332c466f 228 *
Soohwan Kim 0:6f28332c466f 229 * @ returns true
Soohwan Kim 0:6f28332c466f 230 */
Soohwan Kim 0:6f28332c466f 231 bool disconnect();
Soohwan Kim 0:6f28332c466f 232
Soohwan Kim 0:6f28332c466f 233 /*
Soohwan Kim 0:6f28332c466f 234 * Open a tcp connection with the specified host on the specified port
Soohwan Kim 0:6f28332c466f 235 *
Soohwan Kim 0:6f28332c466f 236 * @param host host (can be either an ip address or a name. If a name is provided, a dns request will be established)
Soohwan Kim 0:6f28332c466f 237 * @param port port
Soohwan Kim 0:6f28332c466f 238 * @ returns true if successful
Soohwan Kim 0:6f28332c466f 239 */
Soohwan Kim 0:6f28332c466f 240 bool connect(int socket, const char * host, int port, int timeout_ms = 10*1000);
Soohwan Kim 0:6f28332c466f 241
Soohwan Kim 0:6f28332c466f 242 /*
Soohwan Kim 0:6f28332c466f 243 * Set the protocol (UDP or TCP)
Soohwan Kim 0:6f28332c466f 244 *
Soohwan Kim 0:6f28332c466f 245 * @param p protocol
Soohwan Kim 0:6f28332c466f 246 * @ returns true if successful
Soohwan Kim 0:6f28332c466f 247 */
Soohwan Kim 0:6f28332c466f 248 bool setProtocol(int socket, Protocol p);
Soohwan Kim 0:6f28332c466f 249
Soohwan Kim 0:6f28332c466f 250 /*
Soohwan Kim 0:6f28332c466f 251 * Reset the W5500
Soohwan Kim 0:6f28332c466f 252 */
Soohwan Kim 0:6f28332c466f 253 void reset();
Soohwan Kim 0:6f28332c466f 254
Soohwan Kim 0:6f28332c466f 255 int wait_readable(int socket, int wait_time_ms, int req_size = 0);
Soohwan Kim 0:6f28332c466f 256
Soohwan Kim 0:6f28332c466f 257 int wait_writeable(int socket, int wait_time_ms, int req_size = 0);
Soohwan Kim 0:6f28332c466f 258
Soohwan Kim 0:6f28332c466f 259 /*
Soohwan Kim 0:6f28332c466f 260 * Check if a tcp link is active
Soohwan Kim 0:6f28332c466f 261 *
Soohwan Kim 0:6f28332c466f 262 * @returns true if successful
Soohwan Kim 0:6f28332c466f 263 */
Soohwan Kim 0:6f28332c466f 264 bool is_connected(int socket);
Soohwan Kim 0:6f28332c466f 265
Soohwan Kim 0:6f28332c466f 266 /*
Soohwan Kim 0:6f28332c466f 267 * Close a tcp connection
Soohwan Kim 0:6f28332c466f 268 *
Soohwan Kim 0:6f28332c466f 269 * @ returns true if successful
Soohwan Kim 0:6f28332c466f 270 */
Soohwan Kim 0:6f28332c466f 271 bool close(int socket);
Soohwan Kim 0:6f28332c466f 272
Soohwan Kim 0:6f28332c466f 273 /*
Soohwan Kim 0:6f28332c466f 274 * @param str string to be sent
Soohwan Kim 0:6f28332c466f 275 * @param len string length
Soohwan Kim 0:6f28332c466f 276 */
Soohwan Kim 0:6f28332c466f 277 int send(int socket, const char * str, int len);
Soohwan Kim 0:6f28332c466f 278
Soohwan Kim 0:6f28332c466f 279 int recv(int socket, char* buf, int len);
Soohwan Kim 0:6f28332c466f 280
Soohwan Kim 0:6f28332c466f 281 /*
Soohwan Kim 0:6f28332c466f 282 * Return true if the module is using dhcp
Soohwan Kim 0:6f28332c466f 283 *
Soohwan Kim 0:6f28332c466f 284 * @returns true if the module is using dhcp
Soohwan Kim 0:6f28332c466f 285 */
Soohwan Kim 0:6f28332c466f 286 bool isDHCP() {
Soohwan Kim 0:6f28332c466f 287 return dhcp;
Soohwan Kim 0:6f28332c466f 288 }
Soohwan Kim 0:6f28332c466f 289
Soohwan Kim 0:6f28332c466f 290 bool gethostbyname(const char* host, uint32_t* ip);
Soohwan Kim 0:6f28332c466f 291
Soohwan Kim 0:6f28332c466f 292 static WIZnet_Chip * getInstance() {
Soohwan Kim 0:6f28332c466f 293 return inst;
Soohwan Kim 0:6f28332c466f 294 };
Soohwan Kim 0:6f28332c466f 295
Soohwan Kim 0:6f28332c466f 296 int new_socket();
Soohwan Kim 0:6f28332c466f 297 uint16_t new_port();
Soohwan Kim 0:6f28332c466f 298 void scmd(int socket, Command cmd);
Soohwan Kim 0:6f28332c466f 299
Soohwan Kim 0:6f28332c466f 300 template<typename T>
Soohwan Kim 0:6f28332c466f 301 void sreg(int socket, uint16_t addr, T data) {
Soohwan Kim 0:6f28332c466f 302 reg_wr<T>(addr, (0x0C + (socket << 5)), data);
Soohwan Kim 0:6f28332c466f 303 }
Soohwan Kim 0:6f28332c466f 304
Soohwan Kim 0:6f28332c466f 305 template<typename T>
Soohwan Kim 0:6f28332c466f 306 T sreg(int socket, uint16_t addr) {
Soohwan Kim 0:6f28332c466f 307 return reg_rd<T>(addr, (0x08 + (socket << 5)));
Soohwan Kim 0:6f28332c466f 308 }
Soohwan Kim 0:6f28332c466f 309
Soohwan Kim 0:6f28332c466f 310 template<typename T>
Soohwan Kim 0:6f28332c466f 311 void reg_wr(uint16_t addr, T data) {
Soohwan Kim 0:6f28332c466f 312 return reg_wr(addr, 0x04, data);
Soohwan Kim 0:6f28332c466f 313 }
Soohwan Kim 0:6f28332c466f 314
Soohwan Kim 0:6f28332c466f 315 template<typename T>
Soohwan Kim 0:6f28332c466f 316 void reg_wr(uint16_t addr, uint8_t cb, T data) {
Soohwan Kim 0:6f28332c466f 317 uint8_t buf[sizeof(T)];
Soohwan Kim 0:6f28332c466f 318 *reinterpret_cast<T*>(buf) = data;
Soohwan Kim 0:6f28332c466f 319 for(int i = 0; i < sizeof(buf)/2; i++) { // Little Endian to Big Endian
Soohwan Kim 0:6f28332c466f 320 uint8_t t = buf[i];
Soohwan Kim 0:6f28332c466f 321 buf[i] = buf[sizeof(buf)-1-i];
Soohwan Kim 0:6f28332c466f 322 buf[sizeof(buf)-1-i] = t;
Soohwan Kim 0:6f28332c466f 323 }
Soohwan Kim 0:6f28332c466f 324 spi_write(addr, cb, buf, sizeof(buf));
Soohwan Kim 0:6f28332c466f 325 }
Soohwan Kim 0:6f28332c466f 326
Soohwan Kim 0:6f28332c466f 327 template<typename T>
Soohwan Kim 0:6f28332c466f 328 T reg_rd(uint16_t addr) {
Soohwan Kim 0:6f28332c466f 329 return reg_rd<T>(addr, 0x00);
Soohwan Kim 0:6f28332c466f 330 }
Soohwan Kim 0:6f28332c466f 331
Soohwan Kim 0:6f28332c466f 332 template<typename T>
Soohwan Kim 0:6f28332c466f 333 T reg_rd(uint16_t addr, uint8_t cb) {
Soohwan Kim 0:6f28332c466f 334 uint8_t buf[sizeof(T)];
Soohwan Kim 0:6f28332c466f 335 spi_read(addr, cb, buf, sizeof(buf));
Soohwan Kim 0:6f28332c466f 336 for(int i = 0; i < sizeof(buf)/2; i++) { // Big Endian to Little Endian
Soohwan Kim 0:6f28332c466f 337 uint8_t t = buf[i];
Soohwan Kim 0:6f28332c466f 338 buf[i] = buf[sizeof(buf)-1-i];
Soohwan Kim 0:6f28332c466f 339 buf[sizeof(buf)-1-i] = t;
Soohwan Kim 0:6f28332c466f 340 }
Soohwan Kim 0:6f28332c466f 341 return *reinterpret_cast<T*>(buf);
Soohwan Kim 0:6f28332c466f 342 }
Soohwan Kim 0:6f28332c466f 343
Soohwan Kim 0:6f28332c466f 344 void reg_rd_mac(uint16_t addr, uint8_t* data) {
Soohwan Kim 0:6f28332c466f 345 spi_read(addr, 0x00, data, 6);
Soohwan Kim 0:6f28332c466f 346 }
Soohwan Kim 0:6f28332c466f 347
Soohwan Kim 0:6f28332c466f 348 void reg_wr_ip(uint16_t addr, uint8_t cb, const char* ip) {
Soohwan Kim 0:6f28332c466f 349 uint8_t buf[4];
Soohwan Kim 0:6f28332c466f 350 char* p = (char*)ip;
Soohwan Kim 0:6f28332c466f 351 for(int i = 0; i < 4; i++) {
Soohwan Kim 0:6f28332c466f 352 buf[i] = atoi(p);
Soohwan Kim 0:6f28332c466f 353 p = strchr(p, '.');
Soohwan Kim 0:6f28332c466f 354 if (p == NULL) {
Soohwan Kim 0:6f28332c466f 355 break;
Soohwan Kim 0:6f28332c466f 356 }
Soohwan Kim 0:6f28332c466f 357 p++;
Soohwan Kim 0:6f28332c466f 358 }
Soohwan Kim 0:6f28332c466f 359 spi_write(addr, cb, buf, sizeof(buf));
Soohwan Kim 0:6f28332c466f 360 }
Soohwan Kim 4:4930f81bbe98 361
Soohwan Kim 0:6f28332c466f 362 void sreg_ip(int socket, uint16_t addr, const char* ip) {
Soohwan Kim 0:6f28332c466f 363 reg_wr_ip(addr, (0x0C + (socket << 5)), ip);
Soohwan Kim 0:6f28332c466f 364 }
Soohwan Kim 4:4930f81bbe98 365
Soohwan Kim 4:4930f81bbe98 366 void reg_rd_ip_byte(uint16_t addr, uint8_t* data) {
Soohwan Kim 4:4930f81bbe98 367 spi_read(addr, 0x00, data, 4);
Soohwan Kim 4:4930f81bbe98 368 }
Soohwan Kim 4:4930f81bbe98 369
Soohwan Kim 4:4930f81bbe98 370 void reg_wr_ip_byte(uint16_t addr, uint8_t* data) {
Soohwan Kim 4:4930f81bbe98 371 spi_write(addr, 0x04, data, 4);
Soohwan Kim 4:4930f81bbe98 372 }
Soohwan Kim 4:4930f81bbe98 373
Soohwan Kim 4:4930f81bbe98 374 /////////////////////////////////
Soohwan Kim 4:4930f81bbe98 375 // Common Register I/O function //
Soohwan Kim 4:4930f81bbe98 376 /////////////////////////////////
Soohwan Kim 4:4930f81bbe98 377 /**
Soohwan Kim 4:4930f81bbe98 378 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 379 * @brief Set Mode Register
Soohwan Kim 4:4930f81bbe98 380 * @param (uint8_t)mr The value to be set.
Soohwan Kim 4:4930f81bbe98 381 * @sa getMR()
Soohwan Kim 4:4930f81bbe98 382 */
Soohwan Kim 4:4930f81bbe98 383 void setMR(uint8_t mr) {
Soohwan Kim 4:4930f81bbe98 384 reg_wr<uint8_t>(MR,mr);
Soohwan Kim 4:4930f81bbe98 385 }
Soohwan Kim 4:4930f81bbe98 386
Soohwan Kim 4:4930f81bbe98 387
Soohwan Kim 4:4930f81bbe98 388 /**
Soohwan Kim 4:4930f81bbe98 389 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 390 * @brief Get Mode Register
Soohwan Kim 4:4930f81bbe98 391 * @return uint8_t. The value of Mode register.
Soohwan Kim 4:4930f81bbe98 392 * @sa setMR()
Soohwan Kim 4:4930f81bbe98 393 */
Soohwan Kim 4:4930f81bbe98 394 uint8_t getMR() {
Soohwan Kim 4:4930f81bbe98 395 return reg_rd<uint8_t>(MR);
Soohwan Kim 4:4930f81bbe98 396 }
Soohwan Kim 4:4930f81bbe98 397
Soohwan Kim 4:4930f81bbe98 398 /**
Soohwan Kim 4:4930f81bbe98 399 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 400 * @brief Set gateway IP address
Soohwan Kim 4:4930f81bbe98 401 * @param (uint8_t*)gar Pointer variable to set gateway IP address. It should be allocated 4 bytes.
Soohwan Kim 4:4930f81bbe98 402 * @sa getGAR()
Soohwan Kim 4:4930f81bbe98 403 */
Soohwan Kim 4:4930f81bbe98 404 void setGAR(uint8_t * gar) {
Soohwan Kim 4:4930f81bbe98 405 reg_wr_ip_byte(GAR,gar);
Soohwan Kim 4:4930f81bbe98 406 }
Soohwan Kim 4:4930f81bbe98 407
Soohwan Kim 4:4930f81bbe98 408 /**
Soohwan Kim 4:4930f81bbe98 409 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 410 * @brief Get gateway IP address
Soohwan Kim 4:4930f81bbe98 411 * @param (uint8_t*)gar Pointer variable to get gateway IP address. It should be allocated 4 bytes.
Soohwan Kim 4:4930f81bbe98 412 * @sa setGAR()
Soohwan Kim 4:4930f81bbe98 413 */
Soohwan Kim 4:4930f81bbe98 414 void getGAR(uint8_t * gar) {
Soohwan Kim 4:4930f81bbe98 415 reg_rd_ip_byte(GAR,gar);
Soohwan Kim 4:4930f81bbe98 416 }
Soohwan Kim 4:4930f81bbe98 417
Soohwan Kim 4:4930f81bbe98 418 /**
Soohwan Kim 4:4930f81bbe98 419 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 420 * @brief Set subnet mask address
Soohwan Kim 4:4930f81bbe98 421 * @param (uint8_t*)subr Pointer variable to set subnet mask address. It should be allocated 4 bytes.
Soohwan Kim 4:4930f81bbe98 422 * @sa getSUBR()
Soohwan Kim 4:4930f81bbe98 423 */
Soohwan Kim 4:4930f81bbe98 424 void setSUBR(uint8_t * subr) {
Soohwan Kim 4:4930f81bbe98 425 reg_wr_ip_byte(SUBR, subr);
Soohwan Kim 4:4930f81bbe98 426 }
Soohwan Kim 4:4930f81bbe98 427
Soohwan Kim 4:4930f81bbe98 428
Soohwan Kim 4:4930f81bbe98 429 /**
Soohwan Kim 4:4930f81bbe98 430 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 431 * @brief Get subnet mask address
Soohwan Kim 4:4930f81bbe98 432 * @param (uint8_t*)subr Pointer variable to get subnet mask address. It should be allocated 4 bytes.
Soohwan Kim 4:4930f81bbe98 433 * @sa setSUBR()
Soohwan Kim 4:4930f81bbe98 434 */
Soohwan Kim 4:4930f81bbe98 435 void getSUBR(uint8_t * subr) {
Soohwan Kim 4:4930f81bbe98 436 reg_rd_ip_byte(SUBR, subr);
Soohwan Kim 4:4930f81bbe98 437 }
Soohwan Kim 4:4930f81bbe98 438
Soohwan Kim 4:4930f81bbe98 439 /**
Soohwan Kim 4:4930f81bbe98 440 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 441 * @brief Set local MAC address
Soohwan Kim 4:4930f81bbe98 442 * @param (uint8_t*)shar Pointer variable to set local MAC address. It should be allocated 6 bytes.
Soohwan Kim 4:4930f81bbe98 443 * @sa getSHAR()
Soohwan Kim 4:4930f81bbe98 444 */
Soohwan Kim 4:4930f81bbe98 445 void setSHAR(uint8_t * shar) {
Soohwan Kim 4:4930f81bbe98 446 reg_wr_mac(SHAR, shar);
Soohwan Kim 4:4930f81bbe98 447 }
Soohwan Kim 4:4930f81bbe98 448
Soohwan Kim 4:4930f81bbe98 449 /**
Soohwan Kim 4:4930f81bbe98 450 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 451 * @brief Get local MAC address
Soohwan Kim 4:4930f81bbe98 452 * @param (uint8_t*)shar Pointer variable to get local MAC address. It should be allocated 6 bytes.
Soohwan Kim 4:4930f81bbe98 453 * @sa setSHAR()
Soohwan Kim 4:4930f81bbe98 454 */
Soohwan Kim 4:4930f81bbe98 455 void getSHAR(uint8_t * shar) {
Soohwan Kim 4:4930f81bbe98 456 reg_rd_mac(SHAR, shar);
Soohwan Kim 4:4930f81bbe98 457 }
Soohwan Kim 4:4930f81bbe98 458
Soohwan Kim 4:4930f81bbe98 459 /**
Soohwan Kim 4:4930f81bbe98 460 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 461 * @brief Set local IP address
Soohwan Kim 4:4930f81bbe98 462 * @param (uint8_t*)sipr Pointer variable to set local IP address. It should be allocated 4 bytes.
Soohwan Kim 4:4930f81bbe98 463 * @sa getSIPR()
Soohwan Kim 4:4930f81bbe98 464 */
Soohwan Kim 4:4930f81bbe98 465 void setSIPR(uint8_t * sipr) {
Soohwan Kim 4:4930f81bbe98 466 reg_wr_ip_byte(SIPR, sipr);
Soohwan Kim 4:4930f81bbe98 467 }
Soohwan Kim 4:4930f81bbe98 468
Soohwan Kim 4:4930f81bbe98 469 /**
Soohwan Kim 4:4930f81bbe98 470 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 471 * @brief Get local IP address
Soohwan Kim 4:4930f81bbe98 472 * @param (uint8_t*)sipr Pointer variable to get local IP address. It should be allocated 4 bytes.
Soohwan Kim 4:4930f81bbe98 473 * @sa setSIPR()
Soohwan Kim 4:4930f81bbe98 474 */
Soohwan Kim 4:4930f81bbe98 475 void getSIPR(uint8_t * sipr) {
Soohwan Kim 4:4930f81bbe98 476 reg_rd_ip_byte(SIPR, sipr);
Soohwan Kim 4:4930f81bbe98 477 }
Soohwan Kim 4:4930f81bbe98 478
Soohwan Kim 4:4930f81bbe98 479 /**
Soohwan Kim 4:4930f81bbe98 480 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 481 * @brief Set INTLEVEL register
Soohwan Kim 4:4930f81bbe98 482 * @param (uint16_t)intlevel Value to set @ref INTLEVEL register.
Soohwan Kim 4:4930f81bbe98 483 * @sa getINTLEVEL()
Soohwan Kim 4:4930f81bbe98 484 */
Soohwan Kim 4:4930f81bbe98 485 void setINTLEVEL(uint16_t intlevel) {
Soohwan Kim 4:4930f81bbe98 486 reg_wr<uint16_t>(INTLEVEL, intlevel);
Soohwan Kim 4:4930f81bbe98 487 }
Soohwan Kim 4:4930f81bbe98 488
Soohwan Kim 4:4930f81bbe98 489
Soohwan Kim 4:4930f81bbe98 490 /**
Soohwan Kim 4:4930f81bbe98 491 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 492 * @brief Get INTLEVEL register
Soohwan Kim 4:4930f81bbe98 493 * @return uint16_t. Value of @ref INTLEVEL register.
Soohwan Kim 4:4930f81bbe98 494 * @sa setINTLEVEL()
Soohwan Kim 4:4930f81bbe98 495 */
Soohwan Kim 4:4930f81bbe98 496 uint16_t getINTLEVEL() {
Soohwan Kim 4:4930f81bbe98 497 return reg_rd<uint16_t>(INTLEVEL);
Soohwan Kim 4:4930f81bbe98 498 }
Soohwan Kim 4:4930f81bbe98 499
Soohwan Kim 4:4930f81bbe98 500 /**
Soohwan Kim 4:4930f81bbe98 501 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 502 * @brief Set @ref IR register
Soohwan Kim 4:4930f81bbe98 503 * @param (uint8_t)ir Value to set @ref IR register.
Soohwan Kim 4:4930f81bbe98 504 * @sa getIR()
Soohwan Kim 4:4930f81bbe98 505 */
Soohwan Kim 4:4930f81bbe98 506 void setIR(uint8_t ir) {
Soohwan Kim 4:4930f81bbe98 507 reg_wr<uint8_t>(IR, (ir & 0xF0));
Soohwan Kim 4:4930f81bbe98 508 }
Soohwan Kim 4:4930f81bbe98 509
Soohwan Kim 4:4930f81bbe98 510 /**
Soohwan Kim 4:4930f81bbe98 511 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 512 * @brief Get @ref IR register
Soohwan Kim 4:4930f81bbe98 513 * @return uint8_t. Value of @ref IR register.
Soohwan Kim 4:4930f81bbe98 514 * @sa setIR()
Soohwan Kim 4:4930f81bbe98 515 */
Soohwan Kim 4:4930f81bbe98 516 uint8_t getIR() {
Soohwan Kim 4:4930f81bbe98 517 return reg_rd<uint8_t>(IR & 0xF0);
Soohwan Kim 4:4930f81bbe98 518 }
Soohwan Kim 4:4930f81bbe98 519
Soohwan Kim 4:4930f81bbe98 520 /**
Soohwan Kim 4:4930f81bbe98 521 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 522 * @brief Set @ref IMR register
Soohwan Kim 4:4930f81bbe98 523 * @param (uint8_t)imr Value to set @ref IMR register.
Soohwan Kim 4:4930f81bbe98 524 * @sa getIMR()
Soohwan Kim 4:4930f81bbe98 525 */
Soohwan Kim 4:4930f81bbe98 526 void setIMR(uint8_t imr) {
Soohwan Kim 4:4930f81bbe98 527 reg_wr<uint8_t>(IMR, imr);
Soohwan Kim 4:4930f81bbe98 528 }
Soohwan Kim 4:4930f81bbe98 529
Soohwan Kim 4:4930f81bbe98 530 /**
Soohwan Kim 4:4930f81bbe98 531 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 532 * @brief Get @ref IMR register
Soohwan Kim 4:4930f81bbe98 533 * @return uint8_t. Value of @ref IMR register.
Soohwan Kim 4:4930f81bbe98 534 * @sa setIMR()
Soohwan Kim 4:4930f81bbe98 535 */
Soohwan Kim 4:4930f81bbe98 536 uint8_t getIMR() {
Soohwan Kim 4:4930f81bbe98 537 return reg_rd<uint8_t>(IMR);
Soohwan Kim 4:4930f81bbe98 538 }
Soohwan Kim 4:4930f81bbe98 539
Soohwan Kim 4:4930f81bbe98 540
Soohwan Kim 4:4930f81bbe98 541 /**
Soohwan Kim 4:4930f81bbe98 542 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 543 * @brief Set @ref SIR register
Soohwan Kim 4:4930f81bbe98 544 * @param (uint8_t)sir Value to set @ref SIR register.
Soohwan Kim 4:4930f81bbe98 545 * @sa getSIR()
Soohwan Kim 4:4930f81bbe98 546 */
Soohwan Kim 4:4930f81bbe98 547 void setSIR(uint8_t sir) {
Soohwan Kim 4:4930f81bbe98 548 reg_wr<uint8_t>(SIR, sir);
Soohwan Kim 4:4930f81bbe98 549 }
Soohwan Kim 4:4930f81bbe98 550
Soohwan Kim 4:4930f81bbe98 551 /**
Soohwan Kim 4:4930f81bbe98 552 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 553 * @brief Get @ref SIR register
Soohwan Kim 4:4930f81bbe98 554 * @return uint8_t. Value of @ref SIR register.
Soohwan Kim 4:4930f81bbe98 555 * @sa setSIR()
Soohwan Kim 4:4930f81bbe98 556 */
Soohwan Kim 4:4930f81bbe98 557 uint8_t getSIR() {
Soohwan Kim 4:4930f81bbe98 558 return reg_rd<uint8_t>(SIR);
Soohwan Kim 4:4930f81bbe98 559 }
Soohwan Kim 4:4930f81bbe98 560 /**
Soohwan Kim 4:4930f81bbe98 561 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 562 * @brief Set @ref SIMR register
Soohwan Kim 4:4930f81bbe98 563 * @param (uint8_t)simr Value to set @ref SIMR register.
Soohwan Kim 4:4930f81bbe98 564 * @sa getSIMR()
Soohwan Kim 4:4930f81bbe98 565 */
Soohwan Kim 4:4930f81bbe98 566 void setSIMR(uint8_t simr) {
Soohwan Kim 4:4930f81bbe98 567 reg_wr<uint8_t>(SIMR, simr);
Soohwan Kim 4:4930f81bbe98 568 }
Soohwan Kim 4:4930f81bbe98 569
Soohwan Kim 4:4930f81bbe98 570 /**
Soohwan Kim 4:4930f81bbe98 571 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 572 * @brief Get @ref SIMR register
Soohwan Kim 4:4930f81bbe98 573 * @return uint8_t. Value of @ref SIMR register.
Soohwan Kim 4:4930f81bbe98 574 * @sa setSIMR()
Soohwan Kim 4:4930f81bbe98 575 */
Soohwan Kim 4:4930f81bbe98 576 uint8_t getSIMR() {
Soohwan Kim 4:4930f81bbe98 577 return reg_rd<uint8_t>(SIMR);
Soohwan Kim 4:4930f81bbe98 578 }
Soohwan Kim 4:4930f81bbe98 579
Soohwan Kim 4:4930f81bbe98 580 /**
Soohwan Kim 4:4930f81bbe98 581 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 582 * @brief Set @ref RTR register
Soohwan Kim 4:4930f81bbe98 583 * @param (uint16_t)rtr Value to set @ref RTR register.
Soohwan Kim 4:4930f81bbe98 584 * @sa getRTR()
Soohwan Kim 4:4930f81bbe98 585 */
Soohwan Kim 4:4930f81bbe98 586 void setRTR(uint16_t rtr) {
Soohwan Kim 4:4930f81bbe98 587 reg_wr<uint16_t>(RTR, rtr);
Soohwan Kim 4:4930f81bbe98 588 }
Soohwan Kim 4:4930f81bbe98 589
Soohwan Kim 4:4930f81bbe98 590 /**
Soohwan Kim 4:4930f81bbe98 591 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 592 * @brief Get @ref RTR register
Soohwan Kim 4:4930f81bbe98 593 * @return uint16_t. Value of @ref RTR register.
Soohwan Kim 4:4930f81bbe98 594 * @sa setRTR()
Soohwan Kim 4:4930f81bbe98 595 */
Soohwan Kim 4:4930f81bbe98 596 uint16_t getRTR() {
Soohwan Kim 4:4930f81bbe98 597 return reg_rd<uint16_t>(RTR);
Soohwan Kim 4:4930f81bbe98 598 }
Soohwan Kim 4:4930f81bbe98 599
Soohwan Kim 4:4930f81bbe98 600 /**
Soohwan Kim 4:4930f81bbe98 601 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 602 * @brief Set @ref RCR register
Soohwan Kim 4:4930f81bbe98 603 * @param (uint8_t)rcr Value to set @ref RCR register.
Soohwan Kim 4:4930f81bbe98 604 * @sa getRCR()
Soohwan Kim 4:4930f81bbe98 605 */
Soohwan Kim 4:4930f81bbe98 606 void setRCR(uint8_t rcr) {
Soohwan Kim 4:4930f81bbe98 607 reg_wr<uint8_t>(RCR, rcr);
Soohwan Kim 4:4930f81bbe98 608 }
Soohwan Kim 4:4930f81bbe98 609
Soohwan Kim 4:4930f81bbe98 610 /**
Soohwan Kim 4:4930f81bbe98 611 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 612 * @brief Get @ref RCR register
Soohwan Kim 4:4930f81bbe98 613 * @return uint8_t. Value of @ref RCR register.
Soohwan Kim 4:4930f81bbe98 614 * @sa setRCR()
Soohwan Kim 4:4930f81bbe98 615 */
Soohwan Kim 4:4930f81bbe98 616 uint8_t getRCR() {
Soohwan Kim 4:4930f81bbe98 617 return reg_rd<uint8_t>(RCR);
Soohwan Kim 4:4930f81bbe98 618 }
Soohwan Kim 4:4930f81bbe98 619
Soohwan Kim 4:4930f81bbe98 620 //================================================== test done ===========================================================
Soohwan Kim 4:4930f81bbe98 621
Soohwan Kim 4:4930f81bbe98 622 /**
Soohwan Kim 4:4930f81bbe98 623 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 624 * @brief Set @ref PTIMER register
Soohwan Kim 4:4930f81bbe98 625 * @param (uint8_t)ptimer Value to set @ref PTIMER register.
Soohwan Kim 4:4930f81bbe98 626 * @sa getPTIMER()
Soohwan Kim 4:4930f81bbe98 627 */
Soohwan Kim 4:4930f81bbe98 628 void setPTIMER(uint8_t ptimer) {
Soohwan Kim 4:4930f81bbe98 629 reg_wr<uint8_t>(PTIMER, ptimer);
Soohwan Kim 4:4930f81bbe98 630 }
Soohwan Kim 4:4930f81bbe98 631
Soohwan Kim 4:4930f81bbe98 632 /**
Soohwan Kim 4:4930f81bbe98 633 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 634 * @brief Get @ref PTIMER register
Soohwan Kim 4:4930f81bbe98 635 * @return uint8_t. Value of @ref PTIMER register.
Soohwan Kim 4:4930f81bbe98 636 * @sa setPTIMER()
Soohwan Kim 4:4930f81bbe98 637 */
Soohwan Kim 4:4930f81bbe98 638 uint8_t getPTIMER() {
Soohwan Kim 4:4930f81bbe98 639 return reg_rd<uint8_t>(PTIMER);
Soohwan Kim 4:4930f81bbe98 640 }
Soohwan Kim 4:4930f81bbe98 641
Soohwan Kim 4:4930f81bbe98 642 /**
Soohwan Kim 4:4930f81bbe98 643 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 644 * @brief Set @ref PMAGIC register
Soohwan Kim 4:4930f81bbe98 645 * @param (uint8_t)pmagic Value to set @ref PMAGIC register.
Soohwan Kim 4:4930f81bbe98 646 * @sa getPMAGIC()
Soohwan Kim 4:4930f81bbe98 647 */
Soohwan Kim 4:4930f81bbe98 648 /*
Soohwan Kim 4:4930f81bbe98 649 #define setPMAGIC(pmagic) \
Soohwan Kim 4:4930f81bbe98 650 WIZCHIP_WRITE(PMAGIC, pmagic)
Soohwan Kim 4:4930f81bbe98 651 */
Soohwan Kim 4:4930f81bbe98 652 void setPMAGIC(uint8_t pmagic) {
Soohwan Kim 4:4930f81bbe98 653 reg_wr<uint8_t>(PMAGIC, pmagic );
Soohwan Kim 4:4930f81bbe98 654 }
Soohwan Kim 4:4930f81bbe98 655 /**
Soohwan Kim 4:4930f81bbe98 656 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 657 * @brief Get @ref PMAGIC register
Soohwan Kim 4:4930f81bbe98 658 * @return uint8_t. Value of @ref PMAGIC register.
Soohwan Kim 4:4930f81bbe98 659 * @sa setPMAGIC()
Soohwan Kim 4:4930f81bbe98 660 */
Soohwan Kim 4:4930f81bbe98 661 /*
Soohwan Kim 4:4930f81bbe98 662 #define getPMAGIC() \
Soohwan Kim 4:4930f81bbe98 663 WIZCHIP_READ(PMAGIC)
Soohwan Kim 4:4930f81bbe98 664 */
Soohwan Kim 4:4930f81bbe98 665 uint8_t getPMAGIC(uint8_t pmagic) {
Soohwan Kim 4:4930f81bbe98 666 return reg_rd<uint8_t>(PMAGIC, pmagic);
Soohwan Kim 4:4930f81bbe98 667 }
Soohwan Kim 4:4930f81bbe98 668 /**
Soohwan Kim 4:4930f81bbe98 669 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 670 * @brief Set PHAR address
Soohwan Kim 4:4930f81bbe98 671 * @param (uint8_t*)phar Pointer variable to set PPP destination MAC register address. It should be allocated 6 bytes.
Soohwan Kim 4:4930f81bbe98 672 * @sa getPHAR()
Soohwan Kim 4:4930f81bbe98 673 */
Soohwan Kim 4:4930f81bbe98 674 void setPHAR(uint8_t * phar) {
Soohwan Kim 4:4930f81bbe98 675 reg_wr_mac(PHAR, phar);
Soohwan Kim 4:4930f81bbe98 676 }
Soohwan Kim 4:4930f81bbe98 677
Soohwan Kim 4:4930f81bbe98 678 /**
Soohwan Kim 4:4930f81bbe98 679 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 680 * @brief Get local IP address
Soohwan Kim 4:4930f81bbe98 681 * @param (uint8_t*)phar Pointer variable to PPP destination MAC register address. It should be allocated 6 bytes.
Soohwan Kim 4:4930f81bbe98 682 * @sa setPHAR()
Soohwan Kim 4:4930f81bbe98 683 */
Soohwan Kim 4:4930f81bbe98 684 void getPHAR(uint8_t * phar) {
Soohwan Kim 4:4930f81bbe98 685 reg_rd_mac(PHAR, phar);
Soohwan Kim 4:4930f81bbe98 686 }
Soohwan Kim 4:4930f81bbe98 687
Soohwan Kim 4:4930f81bbe98 688 /**
Soohwan Kim 4:4930f81bbe98 689 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 690 * @brief Set @ref PSID register
Soohwan Kim 4:4930f81bbe98 691 * @param (uint16_t)psid Value to set @ref PSID register.
Soohwan Kim 4:4930f81bbe98 692 * @sa getPSID()
Soohwan Kim 4:4930f81bbe98 693 */
Soohwan Kim 4:4930f81bbe98 694 void setPSID(uint16_t psid) {
Soohwan Kim 4:4930f81bbe98 695 reg_wr<uint16_t>(PSID, psid );
Soohwan Kim 4:4930f81bbe98 696 }
Soohwan Kim 4:4930f81bbe98 697
Soohwan Kim 4:4930f81bbe98 698 /**
Soohwan Kim 4:4930f81bbe98 699 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 700 * @brief Get @ref PSID register
Soohwan Kim 4:4930f81bbe98 701 * @return uint16_t. Value of @ref PSID register.
Soohwan Kim 4:4930f81bbe98 702 * @sa setPSID()
Soohwan Kim 4:4930f81bbe98 703 */
Soohwan Kim 4:4930f81bbe98 704 //uint16_t getPSID(void);
Soohwan Kim 4:4930f81bbe98 705 uint16_t getPSID() {
Soohwan Kim 4:4930f81bbe98 706 return reg_rd<uint16_t>(PSID);
Soohwan Kim 4:4930f81bbe98 707 }
Soohwan Kim 4:4930f81bbe98 708
Soohwan Kim 4:4930f81bbe98 709 /**
Soohwan Kim 4:4930f81bbe98 710 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 711 * @brief Set @ref PMRU register
Soohwan Kim 4:4930f81bbe98 712 * @param (uint16_t)pmru Value to set @ref PMRU register.
Soohwan Kim 4:4930f81bbe98 713 * @sa getPMRU()
Soohwan Kim 4:4930f81bbe98 714 */
Soohwan Kim 4:4930f81bbe98 715 void setPMRU(uint16_t pmru) {
Soohwan Kim 4:4930f81bbe98 716 reg_wr<uint16_t>(PMRU, pmru);
Soohwan Kim 4:4930f81bbe98 717 }
Soohwan Kim 4:4930f81bbe98 718
Soohwan Kim 4:4930f81bbe98 719 /**
Soohwan Kim 4:4930f81bbe98 720 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 721 * @brief Get @ref PMRU register
Soohwan Kim 4:4930f81bbe98 722 * @return uint16_t. Value of @ref PMRU register.
Soohwan Kim 4:4930f81bbe98 723 * @sa setPMRU()
Soohwan Kim 4:4930f81bbe98 724 */
Soohwan Kim 4:4930f81bbe98 725 uint16_t getPMRU() {
Soohwan Kim 4:4930f81bbe98 726 return reg_rd<uint16_t>(PMRU);
Soohwan Kim 4:4930f81bbe98 727 }
Soohwan Kim 4:4930f81bbe98 728
Soohwan Kim 4:4930f81bbe98 729 /**
Soohwan Kim 4:4930f81bbe98 730 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 731 * @brief Get unreachable IP address
Soohwan Kim 4:4930f81bbe98 732 * @param (uint8_t*)uipr Pointer variable to get unreachable IP address. It should be allocated 4 bytes.
Soohwan Kim 4:4930f81bbe98 733 */
Soohwan Kim 4:4930f81bbe98 734 void getUIPR(uint8_t * uipr) {
Soohwan Kim 4:4930f81bbe98 735 reg_rd_ip_byte(UIPR,uipr);
Soohwan Kim 4:4930f81bbe98 736 }
Soohwan Kim 4:4930f81bbe98 737
Soohwan Kim 4:4930f81bbe98 738 /**
Soohwan Kim 4:4930f81bbe98 739 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 740 * @brief Get @ref UPORTR register
Soohwan Kim 4:4930f81bbe98 741 * @return uint16_t. Value of @ref UPORTR register.
Soohwan Kim 4:4930f81bbe98 742 */
Soohwan Kim 4:4930f81bbe98 743 uint16_t getUPORTR() {
Soohwan Kim 4:4930f81bbe98 744 return reg_rd<uint16_t>(UPORTR);
Soohwan Kim 4:4930f81bbe98 745 }
Soohwan Kim 4:4930f81bbe98 746
Soohwan Kim 4:4930f81bbe98 747 /**
Soohwan Kim 4:4930f81bbe98 748 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 749 * @brief Set @ref PHYCFGR register
Soohwan Kim 4:4930f81bbe98 750 * @param (uint8_t)phycfgr Value to set @ref PHYCFGR register.
Soohwan Kim 4:4930f81bbe98 751 * @sa getPHYCFGR()
Soohwan Kim 4:4930f81bbe98 752 */
Soohwan Kim 4:4930f81bbe98 753 void setPHYCFGR(uint8_t phycfgr) {
Soohwan Kim 4:4930f81bbe98 754 reg_wr<uint8_t>(PHYCFGR, phycfgr);
Soohwan Kim 4:4930f81bbe98 755 }
Soohwan Kim 4:4930f81bbe98 756
Soohwan Kim 4:4930f81bbe98 757 /**
Soohwan Kim 4:4930f81bbe98 758 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 759 * @brief Get @ref PHYCFGR register
Soohwan Kim 4:4930f81bbe98 760 * @return uint8_t. Value of @ref PHYCFGR register.
Soohwan Kim 4:4930f81bbe98 761 * @sa setPHYCFGR()
Soohwan Kim 4:4930f81bbe98 762 */
Soohwan Kim 4:4930f81bbe98 763 uint8_t getPHYCFGR() {
Soohwan Kim 4:4930f81bbe98 764 return reg_rd<uint8_t>(PHYCFGR);
Soohwan Kim 4:4930f81bbe98 765 }
Soohwan Kim 4:4930f81bbe98 766
Soohwan Kim 4:4930f81bbe98 767 /**
Soohwan Kim 4:4930f81bbe98 768 * @ingroup Common_register_access_function
Soohwan Kim 4:4930f81bbe98 769 * @brief Get @ref VERSIONR register
Soohwan Kim 4:4930f81bbe98 770 * @return uint8_t. Value of @ref VERSIONR register.
Soohwan Kim 4:4930f81bbe98 771 */
Soohwan Kim 4:4930f81bbe98 772 uint8_t getVERSIONR() {
Soohwan Kim 4:4930f81bbe98 773 return reg_rd<uint8_t>(VERSIONR);
Soohwan Kim 4:4930f81bbe98 774 }
Soohwan Kim 4:4930f81bbe98 775
Soohwan Kim 4:4930f81bbe98 776 /////////////////////////////////////
Soohwan Kim 4:4930f81bbe98 777
Soohwan Kim 4:4930f81bbe98 778 ///////////////////////////////////
Soohwan Kim 4:4930f81bbe98 779 // Socket N register I/O function //
Soohwan Kim 4:4930f81bbe98 780 ///////////////////////////////////
Soohwan Kim 4:4930f81bbe98 781 /**
Soohwan Kim 4:4930f81bbe98 782 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 783 * @brief Set @ref Sn_MR register
Soohwan Kim 4:4930f81bbe98 784 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 785 * @param (uint8_t)mr Value to set @ref Sn_MR
Soohwan Kim 4:4930f81bbe98 786 * @sa getSn_MR()
Soohwan Kim 4:4930f81bbe98 787 */
Soohwan Kim 4:4930f81bbe98 788 void setSn_MR(uint8_t sn, uint8_t mr) {
Soohwan Kim 4:4930f81bbe98 789 sreg<uint8_t>(sn, MR, mr);
Soohwan Kim 4:4930f81bbe98 790 }
Soohwan Kim 4:4930f81bbe98 791
Soohwan Kim 4:4930f81bbe98 792 /**
Soohwan Kim 4:4930f81bbe98 793 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 794 * @brief Get @ref Sn_MR register
Soohwan Kim 4:4930f81bbe98 795 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 796 * @return uint8_t. Value of @ref Sn_MR.
Soohwan Kim 4:4930f81bbe98 797 * @sa setSn_MR()
Soohwan Kim 4:4930f81bbe98 798 */
Soohwan Kim 4:4930f81bbe98 799 uint8_t getSn_MR(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 800 return sreg<uint8_t>(sn, Sn_MR);
Soohwan Kim 4:4930f81bbe98 801 }
Soohwan Kim 4:4930f81bbe98 802
Soohwan Kim 4:4930f81bbe98 803 /**
Soohwan Kim 4:4930f81bbe98 804 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 805 * @brief Set @ref Sn_CR register
Soohwan Kim 4:4930f81bbe98 806 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 807 * @param (uint8_t)cr Value to set @ref Sn_CR
Soohwan Kim 4:4930f81bbe98 808 * @sa getSn_CR()
Soohwan Kim 4:4930f81bbe98 809 */
Soohwan Kim 4:4930f81bbe98 810 void setSn_CR(uint8_t sn, uint8_t cr) {
Soohwan Kim 4:4930f81bbe98 811 sreg<uint8_t>(sn, Sn_CR, cr);
Soohwan Kim 4:4930f81bbe98 812 }
Soohwan Kim 4:4930f81bbe98 813
Soohwan Kim 4:4930f81bbe98 814 /**
Soohwan Kim 4:4930f81bbe98 815 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 816 * @brief Get @ref Sn_CR register
Soohwan Kim 4:4930f81bbe98 817 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 818 * @return uint8_t. Value of @ref Sn_CR.
Soohwan Kim 4:4930f81bbe98 819 * @sa setSn_CR()
Soohwan Kim 4:4930f81bbe98 820 */
Soohwan Kim 4:4930f81bbe98 821 uint8_t getSn_CR(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 822 return sreg<uint8_t>(sn, Sn_CR);
Soohwan Kim 4:4930f81bbe98 823 }
Soohwan Kim 4:4930f81bbe98 824
Soohwan Kim 4:4930f81bbe98 825 /**
Soohwan Kim 4:4930f81bbe98 826 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 827 * @brief Set @ref Sn_IR register
Soohwan Kim 4:4930f81bbe98 828 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 829 * @param (uint8_t)ir Value to set @ref Sn_IR
Soohwan Kim 4:4930f81bbe98 830 * @sa getSn_IR()
Soohwan Kim 4:4930f81bbe98 831 */
Soohwan Kim 4:4930f81bbe98 832 void setSn_IR(uint8_t sn, uint8_t ir) {
Soohwan Kim 4:4930f81bbe98 833 sreg<uint8_t>(sn, Sn_IR, (ir & 0x1F));
Soohwan Kim 4:4930f81bbe98 834 }
Soohwan Kim 4:4930f81bbe98 835
Soohwan Kim 4:4930f81bbe98 836 /**
Soohwan Kim 4:4930f81bbe98 837 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 838 * @brief Get @ref Sn_IR register
Soohwan Kim 4:4930f81bbe98 839 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 840 * @return uint8_t. Value of @ref Sn_IR.
Soohwan Kim 4:4930f81bbe98 841 * @sa setSn_IR()
Soohwan Kim 4:4930f81bbe98 842 */
Soohwan Kim 4:4930f81bbe98 843 uint8_t getSn_IR(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 844 return (sreg<uint8_t>(sn, Sn_IR)) & 0x1F;
Soohwan Kim 4:4930f81bbe98 845 }
Soohwan Kim 4:4930f81bbe98 846
Soohwan Kim 4:4930f81bbe98 847 /**
Soohwan Kim 4:4930f81bbe98 848 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 849 * @brief Set @ref Sn_IMR register
Soohwan Kim 4:4930f81bbe98 850 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 851 * @param (uint8_t)imr Value to set @ref Sn_IMR
Soohwan Kim 4:4930f81bbe98 852 * @sa getSn_IMR()
Soohwan Kim 4:4930f81bbe98 853 */
Soohwan Kim 4:4930f81bbe98 854 void setSn_IMR(uint8_t sn, uint8_t imr) {
Soohwan Kim 4:4930f81bbe98 855 sreg<uint8_t>(sn, Sn_IMR, (imr & 0x1F));
Soohwan Kim 4:4930f81bbe98 856 }
Soohwan Kim 4:4930f81bbe98 857
Soohwan Kim 4:4930f81bbe98 858 /**
Soohwan Kim 4:4930f81bbe98 859 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 860 * @brief Get @ref Sn_IMR register
Soohwan Kim 4:4930f81bbe98 861 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 862 * @return uint8_t. Value of @ref Sn_IMR.
Soohwan Kim 4:4930f81bbe98 863 * @sa setSn_IMR()
Soohwan Kim 4:4930f81bbe98 864 */
Soohwan Kim 4:4930f81bbe98 865 uint8_t getSn_IMR(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 866 return (sreg<uint8_t>(sn, Sn_IMR)) & 0x1F;
Soohwan Kim 4:4930f81bbe98 867 }
Soohwan Kim 4:4930f81bbe98 868
Soohwan Kim 4:4930f81bbe98 869 /**
Soohwan Kim 4:4930f81bbe98 870 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 871 * @brief Get @ref Sn_SR register
Soohwan Kim 4:4930f81bbe98 872 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 873 * @return uint8_t. Value of @ref Sn_SR.
Soohwan Kim 4:4930f81bbe98 874 */
Soohwan Kim 4:4930f81bbe98 875 uint8_t getSn_SR(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 876 return sreg<uint8_t>(sn, Sn_SR);
Soohwan Kim 4:4930f81bbe98 877 }
Soohwan Kim 4:4930f81bbe98 878
Soohwan Kim 4:4930f81bbe98 879 /**
Soohwan Kim 4:4930f81bbe98 880 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 881 * @brief Set @ref Sn_PORT register
Soohwan Kim 4:4930f81bbe98 882 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 883 * @param (uint16_t)port Value to set @ref Sn_PORT.
Soohwan Kim 4:4930f81bbe98 884 * @sa getSn_PORT()
Soohwan Kim 4:4930f81bbe98 885 */
Soohwan Kim 4:4930f81bbe98 886 void setSn_PORT(uint8_t sn, uint16_t port) {
Soohwan Kim 4:4930f81bbe98 887 sreg<uint16_t>(sn, Sn_PORT, port );
Soohwan Kim 4:4930f81bbe98 888 }
Soohwan Kim 4:4930f81bbe98 889
Soohwan Kim 4:4930f81bbe98 890 /**
Soohwan Kim 4:4930f81bbe98 891 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 892 * @brief Get @ref Sn_PORT register
Soohwan Kim 4:4930f81bbe98 893 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 894 * @return uint16_t. Value of @ref Sn_PORT.
Soohwan Kim 4:4930f81bbe98 895 * @sa setSn_PORT()
Soohwan Kim 4:4930f81bbe98 896 */
Soohwan Kim 4:4930f81bbe98 897 uint16_t getSn_PORT(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 898 return sreg<uint16_t>(sn, Sn_PORT);
Soohwan Kim 4:4930f81bbe98 899 }
Soohwan Kim 4:4930f81bbe98 900
Soohwan Kim 4:4930f81bbe98 901 /**
Soohwan Kim 4:4930f81bbe98 902 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 903 * @brief Set @ref Sn_DHAR register
Soohwan Kim 4:4930f81bbe98 904 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 905 * @param (uint8_t*)dhar Pointer variable to set socket n destination hardware address. It should be allocated 6 bytes.
Soohwan Kim 4:4930f81bbe98 906 * @sa getSn_DHAR()
Soohwan Kim 4:4930f81bbe98 907 */
Soohwan Kim 4:4930f81bbe98 908 void setSn_DHAR(uint8_t sn, uint8_t * dhar) {
Soohwan Kim 4:4930f81bbe98 909 spi_write(Sn_DHAR, (0x0C + (sn << 5)), dhar, 6);
Soohwan Kim 4:4930f81bbe98 910 }
Soohwan Kim 4:4930f81bbe98 911
Soohwan Kim 4:4930f81bbe98 912 /**
Soohwan Kim 4:4930f81bbe98 913 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 914 * @brief Get @ref Sn_MR register
Soohwan Kim 4:4930f81bbe98 915 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 916 * @param (uint8_t*)dhar Pointer variable to get socket n destination hardware address. It should be allocated 6 bytes.
Soohwan Kim 4:4930f81bbe98 917 * @sa setSn_DHAR()
Soohwan Kim 4:4930f81bbe98 918 */
Soohwan Kim 4:4930f81bbe98 919 void getSn_DHAR(uint8_t sn, uint8_t * dhar) {
Soohwan Kim 4:4930f81bbe98 920 spi_read(Sn_DHAR, (0x08 + (sn << 5)), dhar, 6);
Soohwan Kim 4:4930f81bbe98 921 }
Soohwan Kim 4:4930f81bbe98 922
Soohwan Kim 4:4930f81bbe98 923 /**
Soohwan Kim 4:4930f81bbe98 924 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 925 * @brief Set @ref Sn_DIPR register
Soohwan Kim 4:4930f81bbe98 926 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 927 * @param (uint8_t*)dipr Pointer variable to set socket n destination IP address. It should be allocated 4 bytes.
Soohwan Kim 4:4930f81bbe98 928 * @sa getSn_DIPR()
Soohwan Kim 4:4930f81bbe98 929 */
Soohwan Kim 4:4930f81bbe98 930 void setSn_DIPR(uint8_t sn, uint8_t * dipr) {
Soohwan Kim 4:4930f81bbe98 931 spi_write(Sn_DIPR, (0x0C + (sn << 5)), dipr, 4);
Soohwan Kim 4:4930f81bbe98 932 }
Soohwan Kim 4:4930f81bbe98 933
Soohwan Kim 4:4930f81bbe98 934 /**
Soohwan Kim 4:4930f81bbe98 935 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 936 * @brief Get @ref Sn_DIPR register
Soohwan Kim 4:4930f81bbe98 937 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 938 * @param (uint8_t*)dipr Pointer variable to get socket n destination IP address. It should be allocated 4 bytes.
Soohwan Kim 4:4930f81bbe98 939 * @sa SetSn_DIPR()
Soohwan Kim 4:4930f81bbe98 940 */
Soohwan Kim 4:4930f81bbe98 941 void getSn_DIPR(uint8_t sn, uint8_t * dipr) {
Soohwan Kim 4:4930f81bbe98 942 spi_read(Sn_DIPR, (0x08 + (sn << 5)), dipr, 4);
Soohwan Kim 4:4930f81bbe98 943 }
Soohwan Kim 4:4930f81bbe98 944
Soohwan Kim 4:4930f81bbe98 945 /**
Soohwan Kim 4:4930f81bbe98 946 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 947 * @brief Set @ref Sn_DPORT register
Soohwan Kim 4:4930f81bbe98 948 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 949 * @param (uint16_t)dport Value to set @ref Sn_DPORT
Soohwan Kim 4:4930f81bbe98 950 * @sa getSn_DPORT()
Soohwan Kim 4:4930f81bbe98 951 */
Soohwan Kim 4:4930f81bbe98 952 void setSn_DPORT(uint8_t sn, uint16_t dport) {
Soohwan Kim 4:4930f81bbe98 953 sreg<uint16_t>(sn, Sn_DPORT, dport);
Soohwan Kim 4:4930f81bbe98 954 }
Soohwan Kim 4:4930f81bbe98 955
Soohwan Kim 4:4930f81bbe98 956 /**
Soohwan Kim 4:4930f81bbe98 957 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 958 * @brief Get @ref Sn_DPORT register
Soohwan Kim 4:4930f81bbe98 959 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 960 * @return uint16_t. Value of @ref Sn_DPORT.
Soohwan Kim 4:4930f81bbe98 961 * @sa setSn_DPORT()
Soohwan Kim 4:4930f81bbe98 962 */
Soohwan Kim 4:4930f81bbe98 963 uint16_t getSn_DPORT(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 964 return sreg<uint16_t>(sn, Sn_DPORT);
Soohwan Kim 4:4930f81bbe98 965 }
Soohwan Kim 4:4930f81bbe98 966
Soohwan Kim 4:4930f81bbe98 967 /**
Soohwan Kim 4:4930f81bbe98 968 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 969 * @brief Set @ref Sn_MSSR register
Soohwan Kim 4:4930f81bbe98 970 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 971 * @param (uint16_t)mss Value to set @ref Sn_MSSR
Soohwan Kim 4:4930f81bbe98 972 * @sa setSn_MSSR()
Soohwan Kim 4:4930f81bbe98 973 */
Soohwan Kim 4:4930f81bbe98 974 void setSn_MSSR(uint8_t sn, uint16_t mss) {
Soohwan Kim 4:4930f81bbe98 975 sreg<uint16_t>(sn, Sn_MSSR, mss);
Soohwan Kim 4:4930f81bbe98 976 }
Soohwan Kim 4:4930f81bbe98 977
Soohwan Kim 4:4930f81bbe98 978 /**
Soohwan Kim 4:4930f81bbe98 979 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 980 * @brief Get @ref Sn_MSSR register
Soohwan Kim 4:4930f81bbe98 981 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 982 * @return uint16_t. Value of @ref Sn_MSSR.
Soohwan Kim 4:4930f81bbe98 983 * @sa setSn_MSSR()
Soohwan Kim 4:4930f81bbe98 984 */
Soohwan Kim 4:4930f81bbe98 985 uint16_t getSn_MSSR(uint16_t sn) {
Soohwan Kim 4:4930f81bbe98 986 return sreg<uint16_t>(sn, Sn_MSSR);
Soohwan Kim 4:4930f81bbe98 987 }
Soohwan Kim 4:4930f81bbe98 988
Soohwan Kim 4:4930f81bbe98 989 /**
Soohwan Kim 4:4930f81bbe98 990 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 991 * @brief Set @ref Sn_TOS register
Soohwan Kim 4:4930f81bbe98 992 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 993 * @param (uint8_t)tos Value to set @ref Sn_TOS
Soohwan Kim 4:4930f81bbe98 994 * @sa getSn_TOS()
Soohwan Kim 4:4930f81bbe98 995 */
Soohwan Kim 4:4930f81bbe98 996 void setSn_TOS(uint8_t sn, uint8_t tos) {
Soohwan Kim 4:4930f81bbe98 997 sreg<uint8_t>(sn, Sn_TOS, tos);
Soohwan Kim 4:4930f81bbe98 998 }
Soohwan Kim 4:4930f81bbe98 999
Soohwan Kim 4:4930f81bbe98 1000 /**
Soohwan Kim 4:4930f81bbe98 1001 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1002 * @brief Get @ref Sn_TOS register
Soohwan Kim 4:4930f81bbe98 1003 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1004 * @return uint8_t. Value of Sn_TOS.
Soohwan Kim 4:4930f81bbe98 1005 * @sa setSn_TOS()
Soohwan Kim 4:4930f81bbe98 1006 */
Soohwan Kim 4:4930f81bbe98 1007 uint8_t getSn_TOS(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 1008 return sreg<uint8_t>(sn, Sn_TOS);
Soohwan Kim 4:4930f81bbe98 1009 }
Soohwan Kim 4:4930f81bbe98 1010
Soohwan Kim 4:4930f81bbe98 1011 /**
Soohwan Kim 4:4930f81bbe98 1012 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1013 * @brief Set @ref Sn_TTL register
Soohwan Kim 4:4930f81bbe98 1014 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1015 * @param (uint8_t)ttl Value to set @ref Sn_TTL
Soohwan Kim 4:4930f81bbe98 1016 * @sa getSn_TTL()
Soohwan Kim 4:4930f81bbe98 1017 */
Soohwan Kim 4:4930f81bbe98 1018 void setSn_TTL(uint8_t sn, uint8_t ttl) {
Soohwan Kim 4:4930f81bbe98 1019 sreg<uint8_t>(sn, Sn_TTL, ttl);
Soohwan Kim 4:4930f81bbe98 1020 }
Soohwan Kim 4:4930f81bbe98 1021
Soohwan Kim 4:4930f81bbe98 1022
Soohwan Kim 4:4930f81bbe98 1023 /**
Soohwan Kim 4:4930f81bbe98 1024 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1025 * @brief Get @ref Sn_TTL register
Soohwan Kim 4:4930f81bbe98 1026 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1027 * @return uint8_t. Value of @ref Sn_TTL.
Soohwan Kim 4:4930f81bbe98 1028 * @sa setSn_TTL()
Soohwan Kim 4:4930f81bbe98 1029 */
Soohwan Kim 4:4930f81bbe98 1030 uint8_t getSn_TTL(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 1031 return sreg<uint8_t>(sn, Sn_TTL);
Soohwan Kim 4:4930f81bbe98 1032 }
Soohwan Kim 4:4930f81bbe98 1033
Soohwan Kim 4:4930f81bbe98 1034
Soohwan Kim 4:4930f81bbe98 1035 /**
Soohwan Kim 4:4930f81bbe98 1036 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1037 * @brief Set @ref Sn_RXBUF_SIZE register
Soohwan Kim 4:4930f81bbe98 1038 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1039 * @param (uint8_t)rxbufsize Value to set @ref Sn_RXBUF_SIZE
Soohwan Kim 4:4930f81bbe98 1040 * @sa getSn_RXBUF_SIZE()
Soohwan Kim 4:4930f81bbe98 1041 */
Soohwan Kim 4:4930f81bbe98 1042 void setSn_RXBUF_SIZE(uint8_t sn, uint8_t rxbufsize) {
Soohwan Kim 4:4930f81bbe98 1043 sreg<uint8_t>(sn, Sn_RXBUF_SIZE ,rxbufsize);
Soohwan Kim 4:4930f81bbe98 1044 }
Soohwan Kim 4:4930f81bbe98 1045
Soohwan Kim 4:4930f81bbe98 1046
Soohwan Kim 4:4930f81bbe98 1047 /**
Soohwan Kim 4:4930f81bbe98 1048 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1049 * @brief Get @ref Sn_RXBUF_SIZE register
Soohwan Kim 4:4930f81bbe98 1050 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1051 * @return uint8_t. Value of @ref Sn_RXBUF_SIZE.
Soohwan Kim 4:4930f81bbe98 1052 * @sa setSn_RXBUF_SIZE()
Soohwan Kim 4:4930f81bbe98 1053 */
Soohwan Kim 4:4930f81bbe98 1054 uint8_t getSn_RXBUF_SIZE(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 1055 return sreg<uint8_t>(sn, Sn_RXBUF_SIZE);
Soohwan Kim 4:4930f81bbe98 1056 }
Soohwan Kim 4:4930f81bbe98 1057
Soohwan Kim 4:4930f81bbe98 1058 /**
Soohwan Kim 4:4930f81bbe98 1059 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1060 * @brief Set @ref Sn_TXBUF_SIZE register
Soohwan Kim 4:4930f81bbe98 1061 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1062 * @param (uint8_t)txbufsize Value to set @ref Sn_TXBUF_SIZE
Soohwan Kim 4:4930f81bbe98 1063 * @sa getSn_TXBUF_SIZE()
Soohwan Kim 4:4930f81bbe98 1064 */
Soohwan Kim 4:4930f81bbe98 1065 void setSn_TXBUF_SIZE(uint8_t sn, uint8_t txbufsize) {
Soohwan Kim 4:4930f81bbe98 1066 sreg<uint8_t>(sn, Sn_TXBUF_SIZE, txbufsize);
Soohwan Kim 4:4930f81bbe98 1067 }
Soohwan Kim 4:4930f81bbe98 1068
Soohwan Kim 4:4930f81bbe98 1069 /**
Soohwan Kim 4:4930f81bbe98 1070 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1071 * @brief Get @ref Sn_TXBUF_SIZE register
Soohwan Kim 4:4930f81bbe98 1072 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1073 * @return uint8_t. Value of @ref Sn_TXBUF_SIZE.
Soohwan Kim 4:4930f81bbe98 1074 * @sa setSn_TXBUF_SIZE()
Soohwan Kim 4:4930f81bbe98 1075 */
Soohwan Kim 4:4930f81bbe98 1076 uint8_t getSn_TXBUF_SIZE(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 1077 return sreg<uint8_t>(sn, Sn_TXBUF_SIZE);
Soohwan Kim 4:4930f81bbe98 1078 }
Soohwan Kim 4:4930f81bbe98 1079
Soohwan Kim 4:4930f81bbe98 1080 /**
Soohwan Kim 4:4930f81bbe98 1081 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1082 * @brief Get @ref Sn_TX_FSR register
Soohwan Kim 4:4930f81bbe98 1083 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1084 * @return uint16_t. Value of @ref Sn_TX_FSR.
Soohwan Kim 4:4930f81bbe98 1085 */
Soohwan Kim 4:4930f81bbe98 1086 uint16_t getSn_TX_FSR(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 1087 return sreg<uint16_t>(sn, Sn_TX_FSR);
Soohwan Kim 4:4930f81bbe98 1088 }
Soohwan Kim 4:4930f81bbe98 1089
Soohwan Kim 4:4930f81bbe98 1090
Soohwan Kim 4:4930f81bbe98 1091 /**
Soohwan Kim 4:4930f81bbe98 1092 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1093 * @brief Get @ref Sn_TX_RD register
Soohwan Kim 4:4930f81bbe98 1094 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1095 * @return uint16_t. Value of @ref Sn_TX_RD.
Soohwan Kim 4:4930f81bbe98 1096 */
Soohwan Kim 4:4930f81bbe98 1097 uint16_t getSn_TX_RD(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 1098 return sreg<uint16_t>(sn, Sn_TX_RD);
Soohwan Kim 4:4930f81bbe98 1099 }
Soohwan Kim 4:4930f81bbe98 1100
Soohwan Kim 4:4930f81bbe98 1101 /**
Soohwan Kim 4:4930f81bbe98 1102 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1103 * @brief Set @ref Sn_TX_WR register
Soohwan Kim 4:4930f81bbe98 1104 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1105 * @param (uint16_t)txwr Value to set @ref Sn_TX_WR
Soohwan Kim 4:4930f81bbe98 1106 * @sa GetSn_TX_WR()
Soohwan Kim 4:4930f81bbe98 1107 */
Soohwan Kim 4:4930f81bbe98 1108 void setSn_TX_WR(uint8_t sn, uint16_t txwr) {
Soohwan Kim 4:4930f81bbe98 1109 sreg<uint16_t>(sn, Sn_TX_WR, txwr);
Soohwan Kim 4:4930f81bbe98 1110 }
Soohwan Kim 4:4930f81bbe98 1111
Soohwan Kim 4:4930f81bbe98 1112 /**
Soohwan Kim 4:4930f81bbe98 1113 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1114 * @brief Get @ref Sn_TX_WR register
Soohwan Kim 4:4930f81bbe98 1115 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1116 * @return uint16_t. Value of @ref Sn_TX_WR.
Soohwan Kim 4:4930f81bbe98 1117 * @sa setSn_TX_WR()
Soohwan Kim 4:4930f81bbe98 1118 */
Soohwan Kim 4:4930f81bbe98 1119 uint16_t getSn_TX_WR(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 1120 return sreg<uint16_t>(sn, Sn_TX_WR);
Soohwan Kim 4:4930f81bbe98 1121 }
Soohwan Kim 4:4930f81bbe98 1122
Soohwan Kim 4:4930f81bbe98 1123
Soohwan Kim 4:4930f81bbe98 1124 /**
Soohwan Kim 4:4930f81bbe98 1125 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1126 * @brief Get @ref Sn_RX_RSR register
Soohwan Kim 4:4930f81bbe98 1127 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1128 * @return uint16_t. Value of @ref Sn_RX_RSR.
Soohwan Kim 4:4930f81bbe98 1129 */
Soohwan Kim 4:4930f81bbe98 1130 uint16_t getSn_RX_RSR(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 1131 return sreg<uint16_t>(sn, Sn_RX_RSR);
Soohwan Kim 4:4930f81bbe98 1132 }
Soohwan Kim 4:4930f81bbe98 1133
Soohwan Kim 4:4930f81bbe98 1134
Soohwan Kim 4:4930f81bbe98 1135 /**
Soohwan Kim 4:4930f81bbe98 1136 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1137 * @brief Set @ref Sn_RX_RD register
Soohwan Kim 4:4930f81bbe98 1138 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1139 * @param (uint16_t)rxrd Value to set @ref Sn_RX_RD
Soohwan Kim 4:4930f81bbe98 1140 * @sa getSn_RX_RD()
Soohwan Kim 4:4930f81bbe98 1141 */
Soohwan Kim 4:4930f81bbe98 1142 void setSn_RX_RD(uint8_t sn, uint16_t rxrd) {
Soohwan Kim 4:4930f81bbe98 1143 sreg<uint16_t>(sn, Sn_RX_RD, rxrd);
Soohwan Kim 4:4930f81bbe98 1144 }
Soohwan Kim 4:4930f81bbe98 1145
Soohwan Kim 4:4930f81bbe98 1146 /**
Soohwan Kim 4:4930f81bbe98 1147 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1148 * @brief Get @ref Sn_RX_RD register
Soohwan Kim 4:4930f81bbe98 1149 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1150 * @regurn uint16_t. Value of @ref Sn_RX_RD.
Soohwan Kim 4:4930f81bbe98 1151 * @sa setSn_RX_RD()
Soohwan Kim 4:4930f81bbe98 1152 */
Soohwan Kim 4:4930f81bbe98 1153 uint16_t getSn_RX_RD(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 1154 return sreg<uint16_t>(sn, Sn_RX_RD);
Soohwan Kim 4:4930f81bbe98 1155 }
Soohwan Kim 4:4930f81bbe98 1156
Soohwan Kim 4:4930f81bbe98 1157 /**
Soohwan Kim 4:4930f81bbe98 1158 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1159 * @brief Get @ref Sn_RX_WR register
Soohwan Kim 4:4930f81bbe98 1160 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1161 * @return uint16_t. Value of @ref Sn_RX_WR.
Soohwan Kim 4:4930f81bbe98 1162 */
Soohwan Kim 4:4930f81bbe98 1163 uint16_t getSn_RX_WR(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 1164 return sreg<uint16_t>(sn, Sn_RX_WR);
Soohwan Kim 4:4930f81bbe98 1165 }
Soohwan Kim 4:4930f81bbe98 1166
Soohwan Kim 4:4930f81bbe98 1167
Soohwan Kim 4:4930f81bbe98 1168 /**
Soohwan Kim 4:4930f81bbe98 1169 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1170 * @brief Set @ref Sn_FRAG register
Soohwan Kim 4:4930f81bbe98 1171 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1172 * @param (uint16_t)frag Value to set @ref Sn_FRAG
Soohwan Kim 4:4930f81bbe98 1173 * @sa getSn_FRAD()
Soohwan Kim 4:4930f81bbe98 1174 */
Soohwan Kim 4:4930f81bbe98 1175 void setSn_FRAG(uint8_t sn, uint16_t frag) {
Soohwan Kim 4:4930f81bbe98 1176 sreg<uint16_t>(sn, Sn_FRAG, frag );
Soohwan Kim 4:4930f81bbe98 1177 }
Soohwan Kim 4:4930f81bbe98 1178
Soohwan Kim 4:4930f81bbe98 1179 /**
Soohwan Kim 4:4930f81bbe98 1180 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1181 * @brief Get @ref Sn_FRAG register
Soohwan Kim 4:4930f81bbe98 1182 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1183 * @return uint16_t. Value of @ref Sn_FRAG.
Soohwan Kim 4:4930f81bbe98 1184 * @sa setSn_FRAG()
Soohwan Kim 4:4930f81bbe98 1185 */
Soohwan Kim 4:4930f81bbe98 1186 uint16_t getSn_FRAG(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 1187 return sreg<uint16_t>(sn, Sn_FRAG);
Soohwan Kim 4:4930f81bbe98 1188 }
Soohwan Kim 4:4930f81bbe98 1189
Soohwan Kim 4:4930f81bbe98 1190 /**
Soohwan Kim 4:4930f81bbe98 1191 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1192 * @brief Set @ref Sn_KPALVTR register
Soohwan Kim 4:4930f81bbe98 1193 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1194 * @param (uint8_t)kpalvt Value to set @ref Sn_KPALVTR
Soohwan Kim 4:4930f81bbe98 1195 * @sa getSn_KPALVTR()
Soohwan Kim 4:4930f81bbe98 1196 */
Soohwan Kim 4:4930f81bbe98 1197 void setSn_KPALVTR(uint8_t sn, uint8_t kpalvt) {
Soohwan Kim 4:4930f81bbe98 1198 sreg<uint8_t>(sn, Sn_KPALVTR, kpalvt);
Soohwan Kim 4:4930f81bbe98 1199 }
Soohwan Kim 4:4930f81bbe98 1200
Soohwan Kim 4:4930f81bbe98 1201 /**
Soohwan Kim 4:4930f81bbe98 1202 * @ingroup Socket_register_access_function
Soohwan Kim 4:4930f81bbe98 1203 * @brief Get @ref Sn_KPALVTR register
Soohwan Kim 4:4930f81bbe98 1204 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1205 * @return uint8_t. Value of @ref Sn_KPALVTR.
Soohwan Kim 4:4930f81bbe98 1206 * @sa setSn_KPALVTR()
Soohwan Kim 4:4930f81bbe98 1207 */
Soohwan Kim 4:4930f81bbe98 1208 uint8_t getSn_KPALVTR(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 1209 return sreg<uint8_t>(sn, Sn_KPALVTR);
Soohwan Kim 4:4930f81bbe98 1210 }
Soohwan Kim 4:4930f81bbe98 1211
Soohwan Kim 4:4930f81bbe98 1212 //////////////////////////////////////
Soohwan Kim 4:4930f81bbe98 1213
Soohwan Kim 4:4930f81bbe98 1214 /////////////////////////////////////
Soohwan Kim 4:4930f81bbe98 1215 // Sn_TXBUF & Sn_RXBUF IO function //
Soohwan Kim 4:4930f81bbe98 1216 /////////////////////////////////////
Soohwan Kim 4:4930f81bbe98 1217 /**
Soohwan Kim 4:4930f81bbe98 1218 * @brief Gets the max buffer size of socket sn passed as parameter.
Soohwan Kim 4:4930f81bbe98 1219 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1220 * @return uint16_t. Value of Socket n RX max buffer size.
Soohwan Kim 4:4930f81bbe98 1221 */
Soohwan Kim 4:4930f81bbe98 1222 uint16_t getSn_RxMAX(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 1223 return (getSn_RXBUF_SIZE(sn) << 10);
Soohwan Kim 4:4930f81bbe98 1224 }
Soohwan Kim 4:4930f81bbe98 1225
Soohwan Kim 4:4930f81bbe98 1226 /**
Soohwan Kim 4:4930f81bbe98 1227 * @brief Gets the max buffer size of socket sn passed as parameters.
Soohwan Kim 4:4930f81bbe98 1228 * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
Soohwan Kim 4:4930f81bbe98 1229 * @return uint16_t. Value of Socket n TX max buffer size.
Soohwan Kim 4:4930f81bbe98 1230 */
Soohwan Kim 4:4930f81bbe98 1231 //uint16_t getSn_TxMAX(uint8_t sn);
Soohwan Kim 4:4930f81bbe98 1232 uint16_t getSn_TxMAX(uint8_t sn) {
Soohwan Kim 4:4930f81bbe98 1233 return (getSn_TXBUF_SIZE(sn) << 10);
Soohwan Kim 4:4930f81bbe98 1234 }
Soohwan Kim 4:4930f81bbe98 1235
Soohwan Kim 0:6f28332c466f 1236
Soohwan Kim 0:6f28332c466f 1237 protected:
Soohwan Kim 0:6f28332c466f 1238 uint8_t mac[6];
Soohwan Kim 0:6f28332c466f 1239 uint32_t ip;
Soohwan Kim 0:6f28332c466f 1240 uint32_t netmask;
Soohwan Kim 0:6f28332c466f 1241 uint32_t gateway;
Soohwan Kim 0:6f28332c466f 1242 uint32_t dnsaddr;
Soohwan Kim 0:6f28332c466f 1243 bool dhcp;
Soohwan Kim 4:4930f81bbe98 1244
Soohwan Kim 4:4930f81bbe98 1245
Soohwan Kim 0:6f28332c466f 1246
Soohwan Kim 0:6f28332c466f 1247 static WIZnet_Chip* inst;
Soohwan Kim 0:6f28332c466f 1248
Soohwan Kim 0:6f28332c466f 1249 void reg_wr_mac(uint16_t addr, uint8_t* data) {
Soohwan Kim 0:6f28332c466f 1250 spi_write(addr, 0x04, data, 6);
Soohwan Kim 0:6f28332c466f 1251 }
Soohwan Kim 0:6f28332c466f 1252
Soohwan Kim 0:6f28332c466f 1253 void spi_write(uint16_t addr, uint8_t cb, const uint8_t *buf, uint16_t len);
Soohwan Kim 0:6f28332c466f 1254 void spi_read(uint16_t addr, uint8_t cb, uint8_t *buf, uint16_t len);
Soohwan Kim 0:6f28332c466f 1255 SPI* spi;
Soohwan Kim 0:6f28332c466f 1256 DigitalOut cs;
Soohwan Kim 0:6f28332c466f 1257 DigitalOut reset_pin;
Soohwan Kim 0:6f28332c466f 1258 };
Soohwan Kim 0:6f28332c466f 1259
Soohwan Kim 0:6f28332c466f 1260 extern uint32_t str_to_ip(const char* str);
Soohwan Kim 0:6f28332c466f 1261 extern void printfBytes(char* str, uint8_t* buf, int len);
Soohwan Kim 0:6f28332c466f 1262 extern void printHex(uint8_t* buf, int len);
Soohwan Kim 0:6f28332c466f 1263 extern void debug_hex(uint8_t* buf, int len);