W5500-Ethernet-Interface Makers / W5500Interface

Dependents:   EvrythngApi Websocket_Ethernet_HelloWorld_W5500 Websocket_Ethernet_W5500 CurrentWeatherData_W5500 ... more

Committer:
embeddist
Date:
Tue Apr 28 13:52:23 2015 +0000
Revision:
11:5499fa2d8898
Parent:
10:713b6d2aaefb
Remove the setting of tx/rx buffer in SWReset

Who changed what in which revision?

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