Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of WIZnetInterface by
arch/ext/W5500.h@14:2101ab5ee40f, 2015-06-17 (annotated)
- Committer:
- embeddist
- Date:
- Wed Jun 17 00:24:45 2015 +0000
- Revision:
- 14:2101ab5ee40f
- Parent:
- 12:99e8386ba225
- arch/int/W5500.c - fixed reset() for WIZ550io; - tested arch/in/W5500 on LPC824 / NUCLEOF103RB / FRDM-KL25Z
Who changed what in which revision?
User | Revision | Line number | New 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 |
4:4930f81bbe98 | 29 | #define SOCK_ERROR 0 |
Soohwan Kim |
4:4930f81bbe98 | 30 | #define SOCKERR_SOCKNUM (SOCK_ERROR - 1) ///< Invalid socket number |
Soohwan Kim |
4:4930f81bbe98 | 31 | #define SOCKERR_SOCKOPT (SOCK_ERROR - 2) ///< Invalid socket option |
Soohwan Kim |
4:4930f81bbe98 | 32 | #define SOCKERR_SOCKINIT (SOCK_ERROR - 3) ///< Socket is not initialized |
Soohwan Kim |
4:4930f81bbe98 | 33 | #define SOCKERR_SOCKCLOSED (SOCK_ERROR - 4) ///< Socket unexpectedly closed. |
Soohwan Kim |
4:4930f81bbe98 | 34 | #define SOCKERR_SOCKMODE (SOCK_ERROR - 5) ///< Invalid socket mode for socket operation. |
Soohwan Kim |
4:4930f81bbe98 | 35 | #define SOCKERR_SOCKFLAG (SOCK_ERROR - 6) ///< Invalid socket flag |
Soohwan Kim |
4:4930f81bbe98 | 36 | #define SOCKERR_SOCKSTATUS (SOCK_ERROR - 7) ///< Invalid socket status for socket operation. |
Soohwan Kim |
4:4930f81bbe98 | 37 | #define SOCKERR_ARG (SOCK_ERROR - 10) ///< Invalid argrument. |
Soohwan Kim |
4:4930f81bbe98 | 38 | #define SOCKERR_PORTZERO (SOCK_ERROR - 11) ///< Port number is zero |
Soohwan Kim |
4:4930f81bbe98 | 39 | #define SOCKERR_IPINVALID (SOCK_ERROR - 12) ///< Invalid IP address |
Soohwan Kim |
4:4930f81bbe98 | 40 | #define SOCKERR_TIMEOUT (SOCK_ERROR - 13) ///< Timeout occurred |
Soohwan Kim |
4:4930f81bbe98 | 41 | #define SOCKERR_DATALEN (SOCK_ERROR - 14) ///< Data length is zero or greater than buffer max size. |
Soohwan Kim |
4:4930f81bbe98 | 42 | #define SOCKERR_BUFFER (SOCK_ERROR - 15) ///< Socket buffer is not enough for data communication. |
Soohwan Kim |
4:4930f81bbe98 | 43 | |
Soohwan Kim |
4:4930f81bbe98 | 44 | #define SOCK_ANY_PORT_NUM 0xC000; |
Soohwan Kim |
4:4930f81bbe98 | 45 | |
Soohwan Kim |
0:6f28332c466f | 46 | |
Soohwan Kim |
0:6f28332c466f | 47 | #define MAX_SOCK_NUM 8 |
Soohwan Kim |
0:6f28332c466f | 48 | |
Soohwan Kim |
0:6f28332c466f | 49 | #define MR 0x0000 |
Soohwan Kim |
0:6f28332c466f | 50 | #define GAR 0x0001 |
Soohwan Kim |
0:6f28332c466f | 51 | #define SUBR 0x0005 |
Soohwan Kim |
0:6f28332c466f | 52 | #define SHAR 0x0009 |
Soohwan Kim |
0:6f28332c466f | 53 | #define SIPR 0x000f |
Soohwan Kim |
4:4930f81bbe98 | 54 | #define IR 0x0015 |
Soohwan Kim |
4:4930f81bbe98 | 55 | #define IMR 0x0016 |
Soohwan Kim |
4:4930f81bbe98 | 56 | #define SIR 0x0017 |
Soohwan Kim |
4:4930f81bbe98 | 57 | #define SIMR 0x0018 |
Soohwan Kim |
4:4930f81bbe98 | 58 | #define RTR 0x0019 |
Soohwan Kim |
4:4930f81bbe98 | 59 | #define RCR 0x001b |
Soohwan Kim |
4:4930f81bbe98 | 60 | #define UIPR 0x0028 |
Soohwan Kim |
4:4930f81bbe98 | 61 | #define UPORTR 0x002c |
Soohwan Kim |
4:4930f81bbe98 | 62 | #define PHYCFGR 0x002e |
Soohwan Kim |
0:6f28332c466f | 63 | |
Soohwan Kim |
0:6f28332c466f | 64 | // W5500 socket register |
Soohwan Kim |
0:6f28332c466f | 65 | #define Sn_MR 0x0000 |
Soohwan Kim |
0:6f28332c466f | 66 | #define Sn_CR 0x0001 |
Soohwan Kim |
0:6f28332c466f | 67 | #define Sn_IR 0x0002 |
Soohwan Kim |
0:6f28332c466f | 68 | #define Sn_SR 0x0003 |
Soohwan Kim |
0:6f28332c466f | 69 | #define Sn_PORT 0x0004 |
Soohwan Kim |
4:4930f81bbe98 | 70 | #define Sn_DHAR 0x0006 |
Soohwan Kim |
0:6f28332c466f | 71 | #define Sn_DIPR 0x000c |
Soohwan Kim |
0:6f28332c466f | 72 | #define Sn_DPORT 0x0010 |
Soohwan Kim |
0:6f28332c466f | 73 | #define Sn_RXBUF_SIZE 0x001e |
Soohwan Kim |
0:6f28332c466f | 74 | #define Sn_TXBUF_SIZE 0x001f |
Soohwan Kim |
0:6f28332c466f | 75 | #define Sn_TX_FSR 0x0020 |
Soohwan Kim |
4:4930f81bbe98 | 76 | #define Sn_TX_RD 0x0022 |
Soohwan Kim |
0:6f28332c466f | 77 | #define Sn_TX_WR 0x0024 |
Soohwan Kim |
0:6f28332c466f | 78 | #define Sn_RX_RSR 0x0026 |
Soohwan Kim |
0:6f28332c466f | 79 | #define Sn_RX_RD 0x0028 |
Soohwan Kim |
4:4930f81bbe98 | 80 | #define Sn_RX_WR 0x002a |
Soohwan Kim |
4:4930f81bbe98 | 81 | #define Sn_IMR 0x002c |
Soohwan Kim |
4:4930f81bbe98 | 82 | |
Soohwan Kim |
4:4930f81bbe98 | 83 | |
Soohwan Kim |
4:4930f81bbe98 | 84 | //Define for Socket Command register option value |
Soohwan Kim |
4:4930f81bbe98 | 85 | #define Sn_CR_OPEN 0x01 |
Soohwan Kim |
4:4930f81bbe98 | 86 | #define Sn_CR_LISTEN 0x02 |
Soohwan Kim |
4:4930f81bbe98 | 87 | #define Sn_CR_CONNECT 0x04 |
Soohwan Kim |
4:4930f81bbe98 | 88 | #define Sn_CR_DISCON 0x08 |
Soohwan Kim |
4:4930f81bbe98 | 89 | #define Sn_CR_CLOSE 0x10 |
Soohwan Kim |
4:4930f81bbe98 | 90 | #define Sn_CR_SEND 0x20 |
Soohwan Kim |
4:4930f81bbe98 | 91 | #define Sn_CR_SEND_MAC 0x21 |
Soohwan Kim |
4:4930f81bbe98 | 92 | #define Sn_CR_SEND_KEEP 0x22 |
Soohwan Kim |
4:4930f81bbe98 | 93 | #define Sn_CR_RECV 0x40 |
Soohwan Kim |
4:4930f81bbe98 | 94 | |
Soohwan Kim |
4:4930f81bbe98 | 95 | |
Soohwan Kim |
4:4930f81bbe98 | 96 | //Define for Socket Mode register option value |
Soohwan Kim |
4:4930f81bbe98 | 97 | #define Sn_MR_CLOSE 0x00 |
Soohwan Kim |
4:4930f81bbe98 | 98 | #define Sn_MR_TCP 0x01 |
Soohwan Kim |
4:4930f81bbe98 | 99 | #define Sn_MR_UDP 0x02 |
Soohwan Kim |
4:4930f81bbe98 | 100 | #define Sn_MR_MACRAW 0x04 |
Soohwan Kim |
4:4930f81bbe98 | 101 | #define Sn_MR_UCASTB 0x10 |
Soohwan Kim |
4:4930f81bbe98 | 102 | #define Sn_MR_ND 0x20 |
Soohwan Kim |
4:4930f81bbe98 | 103 | #define Sn_MR_BCASTB 0x40 |
Soohwan Kim |
4:4930f81bbe98 | 104 | #define Sn_MR_MULTI 0x80 |
Soohwan Kim |
4:4930f81bbe98 | 105 | |
Soohwan Kim |
4:4930f81bbe98 | 106 | #define Sn_IR_SENDOK 0x10 |
Soohwan Kim |
4:4930f81bbe98 | 107 | |
Soohwan Kim |
4:4930f81bbe98 | 108 | //Sn_IR values |
Soohwan Kim |
4:4930f81bbe98 | 109 | |
Soohwan Kim |
4:4930f81bbe98 | 110 | #define Sn_IR_TIMEOUT 0x08 |
Soohwan Kim |
4:4930f81bbe98 | 111 | #define Sn_IR_RECV 0x04 |
Soohwan Kim |
4:4930f81bbe98 | 112 | #define Sn_IR_DISCON 0x02 |
Soohwan Kim |
4:4930f81bbe98 | 113 | #define Sn_IR_CON 0x01 |
Soohwan Kim |
4:4930f81bbe98 | 114 | |
Soohwan Kim |
4:4930f81bbe98 | 115 | /* PHYCFGR register value */ |
Soohwan Kim |
4:4930f81bbe98 | 116 | #define PHYCFGR_RST ~(1<<7) //< For PHY reset, must operate AND mask. |
Soohwan Kim |
4:4930f81bbe98 | 117 | #define PHYCFGR_OPMD (1<<6) // Configre PHY with OPMDC value |
Soohwan Kim |
4:4930f81bbe98 | 118 | #define PHYCFGR_OPMDC_ALLA (7<<3) |
Soohwan Kim |
4:4930f81bbe98 | 119 | #define PHYCFGR_OPMDC_PDOWN (6<<3) |
Soohwan Kim |
4:4930f81bbe98 | 120 | #define PHYCFGR_OPMDC_NA (5<<3) |
Soohwan Kim |
4:4930f81bbe98 | 121 | #define PHYCFGR_OPMDC_100FA (4<<3) |
Soohwan Kim |
4:4930f81bbe98 | 122 | #define PHYCFGR_OPMDC_100F (3<<3) |
Soohwan Kim |
4:4930f81bbe98 | 123 | #define PHYCFGR_OPMDC_100H (2<<3) |
Soohwan Kim |
4:4930f81bbe98 | 124 | #define PHYCFGR_OPMDC_10F (1<<3) |
Soohwan Kim |
4:4930f81bbe98 | 125 | #define PHYCFGR_OPMDC_10H (0<<3) |
Soohwan Kim |
4:4930f81bbe98 | 126 | #define PHYCFGR_DPX_FULL (1<<2) |
Soohwan Kim |
4:4930f81bbe98 | 127 | #define PHYCFGR_DPX_HALF (0<<2) |
Soohwan Kim |
4:4930f81bbe98 | 128 | #define PHYCFGR_SPD_100 (1<<1) |
Soohwan Kim |
4:4930f81bbe98 | 129 | #define PHYCFGR_SPD_10 (0<<1) |
Soohwan Kim |
4:4930f81bbe98 | 130 | #define PHYCFGR_LNK_ON (1<<0) |
Soohwan Kim |
4:4930f81bbe98 | 131 | #define PHYCFGR_LNK_OFF (0<<0) |
Soohwan Kim |
4:4930f81bbe98 | 132 | |
Soohwan Kim |
4:4930f81bbe98 | 133 | //PHY status define |
Soohwan Kim |
4:4930f81bbe98 | 134 | #define PHY_CONFBY_HW 0 ///< Configured PHY operation mode by HW pin |
Soohwan Kim |
4:4930f81bbe98 | 135 | #define PHY_CONFBY_SW 1 ///< Configured PHY operation mode by SW register |
Soohwan Kim |
4:4930f81bbe98 | 136 | #define PHY_MODE_MANUAL 0 ///< Configured PHY operation mode with user setting. |
Soohwan Kim |
4:4930f81bbe98 | 137 | #define PHY_MODE_AUTONEGO 1 ///< Configured PHY operation mode with auto-negotiation |
Soohwan Kim |
4:4930f81bbe98 | 138 | #define PHY_SPEED_10 0 ///< Link Speed 10 |
Soohwan Kim |
4:4930f81bbe98 | 139 | #define PHY_SPEED_100 1 ///< Link Speed 100 |
Soohwan Kim |
4:4930f81bbe98 | 140 | #define PHY_DUPLEX_HALF 0 ///< Link Half-Duplex |
Soohwan Kim |
4:4930f81bbe98 | 141 | #define PHY_DUPLEX_FULL 1 ///< Link Full-Duplex |
Soohwan Kim |
4:4930f81bbe98 | 142 | #define PHY_LINK_OFF 0 ///< Link Off |
Soohwan Kim |
4:4930f81bbe98 | 143 | #define PHY_LINK_ON 1 ///< Link On |
Soohwan Kim |
4:4930f81bbe98 | 144 | #define PHY_POWER_NORM 0 ///< PHY power normal mode |
Soohwan Kim |
4:4930f81bbe98 | 145 | #define PHY_POWER_DOWN 1 ///< PHY power down mode |
Soohwan Kim |
0:6f28332c466f | 146 | |
Soohwan Kim |
8:4c02de1dbf3a | 147 | enum PHYMode { |
Soohwan Kim |
8:4c02de1dbf3a | 148 | AutoNegotiate = 0, |
Soohwan Kim |
8:4c02de1dbf3a | 149 | HalfDuplex10 = 1, |
Soohwan Kim |
8:4c02de1dbf3a | 150 | FullDuplex10 = 2, |
Soohwan Kim |
8:4c02de1dbf3a | 151 | HalfDuplex100 = 3, |
Soohwan Kim |
8:4c02de1dbf3a | 152 | FullDuplex100 = 4, |
Soohwan Kim |
8:4c02de1dbf3a | 153 | }; |
Soohwan Kim |
0:6f28332c466f | 154 | class WIZnet_Chip { |
Soohwan Kim |
0:6f28332c466f | 155 | public: |
embeddist | 3:f8c6efc8bf83 | 156 | enum Protocol { |
embeddist | 3:f8c6efc8bf83 | 157 | CLOSED = 0, |
embeddist | 3:f8c6efc8bf83 | 158 | TCP = 1, |
embeddist | 3:f8c6efc8bf83 | 159 | UDP = 2, |
embeddist | 3:f8c6efc8bf83 | 160 | }; |
embeddist | 3:f8c6efc8bf83 | 161 | |
embeddist | 3:f8c6efc8bf83 | 162 | enum Command { |
embeddist | 3:f8c6efc8bf83 | 163 | OPEN = 0x01, |
embeddist | 3:f8c6efc8bf83 | 164 | LISTEN = 0x02, |
embeddist | 3:f8c6efc8bf83 | 165 | CONNECT = 0x04, |
embeddist | 3:f8c6efc8bf83 | 166 | DISCON = 0x08, |
embeddist | 3:f8c6efc8bf83 | 167 | CLOSE = 0x10, |
embeddist | 3:f8c6efc8bf83 | 168 | SEND = 0x20, |
embeddist | 3:f8c6efc8bf83 | 169 | SEND_MAC = 0x21, |
embeddist | 3:f8c6efc8bf83 | 170 | SEND_KEEP = 0x22, |
embeddist | 3:f8c6efc8bf83 | 171 | RECV = 0x40, |
embeddist | 3:f8c6efc8bf83 | 172 | |
embeddist | 3:f8c6efc8bf83 | 173 | }; |
embeddist | 3:f8c6efc8bf83 | 174 | |
embeddist | 3:f8c6efc8bf83 | 175 | enum Interrupt { |
embeddist | 3:f8c6efc8bf83 | 176 | INT_CON = 0x01, |
embeddist | 3:f8c6efc8bf83 | 177 | INT_DISCON = 0x02, |
embeddist | 3:f8c6efc8bf83 | 178 | INT_RECV = 0x04, |
embeddist | 3:f8c6efc8bf83 | 179 | INT_TIMEOUT = 0x08, |
embeddist | 3:f8c6efc8bf83 | 180 | INT_SEND_OK = 0x10, |
embeddist | 3:f8c6efc8bf83 | 181 | }; |
embeddist | 3:f8c6efc8bf83 | 182 | |
Soohwan Kim |
5:f432ae8f8708 | 183 | enum Status { |
Soohwan Kim |
5:f432ae8f8708 | 184 | SOCK_CLOSED = 0x00, |
Soohwan Kim |
5:f432ae8f8708 | 185 | SOCK_INIT = 0x13, |
Soohwan Kim |
5:f432ae8f8708 | 186 | SOCK_LISTEN = 0x14, |
Soohwan Kim |
5:f432ae8f8708 | 187 | SOCK_SYNSENT = 0x15, |
Soohwan Kim |
5:f432ae8f8708 | 188 | SOCK_ESTABLISHED = 0x17, |
Soohwan Kim |
5:f432ae8f8708 | 189 | SOCK_CLOSE_WAIT = 0x1c, |
Soohwan Kim |
5:f432ae8f8708 | 190 | SOCK_UDP = 0x22, |
Soohwan Kim |
5:f432ae8f8708 | 191 | }; |
Soohwan Kim |
5:f432ae8f8708 | 192 | |
Soohwan Kim |
4:4930f81bbe98 | 193 | |
Soohwan Kim |
4:4930f81bbe98 | 194 | uint16_t sock_any_port; |
Soohwan Kim |
4:4930f81bbe98 | 195 | |
Soohwan Kim |
0:6f28332c466f | 196 | /* |
Soohwan Kim |
0:6f28332c466f | 197 | * Constructor |
Soohwan Kim |
0:6f28332c466f | 198 | * |
Soohwan Kim |
0:6f28332c466f | 199 | * @param spi spi class |
Soohwan Kim |
0:6f28332c466f | 200 | * @param cs cs of the W5500 |
Soohwan Kim |
0:6f28332c466f | 201 | * @param reset reset pin of the W5500 |
Soohwan Kim |
0:6f28332c466f | 202 | */ |
Soohwan Kim |
4:4930f81bbe98 | 203 | WIZnet_Chip(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName reset); |
Soohwan Kim |
4:4930f81bbe98 | 204 | WIZnet_Chip(SPI* spi, PinName cs, PinName reset); |
Soohwan Kim |
0:6f28332c466f | 205 | |
Soohwan Kim |
0:6f28332c466f | 206 | /* |
Soohwan Kim |
4:4930f81bbe98 | 207 | * Set MAC Address to W5500 |
Soohwan Kim |
4:4930f81bbe98 | 208 | * |
Soohwan Kim |
4:4930f81bbe98 | 209 | * @return true if connected, false otherwise |
Soohwan Kim |
4:4930f81bbe98 | 210 | */ |
Soohwan Kim |
4:4930f81bbe98 | 211 | bool setmac(); |
Soohwan Kim |
4:4930f81bbe98 | 212 | |
Soohwan Kim |
4:4930f81bbe98 | 213 | /* |
Soohwan Kim |
4:4930f81bbe98 | 214 | * Set Network Informations (SrcIP, Netmask, Gataway) |
Soohwan Kim |
0:6f28332c466f | 215 | * |
Soohwan Kim |
0:6f28332c466f | 216 | * @return true if connected, false otherwise |
Soohwan Kim |
0:6f28332c466f | 217 | */ |
Soohwan Kim |
0:6f28332c466f | 218 | bool setip(); |
Soohwan Kim |
0:6f28332c466f | 219 | |
Soohwan Kim |
0:6f28332c466f | 220 | /* |
Soohwan Kim |
0:6f28332c466f | 221 | * Disconnect the connection |
Soohwan Kim |
0:6f28332c466f | 222 | * |
Soohwan Kim |
0:6f28332c466f | 223 | * @ returns true |
Soohwan Kim |
0:6f28332c466f | 224 | */ |
Soohwan Kim |
0:6f28332c466f | 225 | bool disconnect(); |
Soohwan Kim |
0:6f28332c466f | 226 | |
Soohwan Kim |
0:6f28332c466f | 227 | /* |
Soohwan Kim |
0:6f28332c466f | 228 | * Open a tcp connection with the specified host on the specified port |
Soohwan Kim |
0:6f28332c466f | 229 | * |
Soohwan Kim |
0:6f28332c466f | 230 | * @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 | 231 | * @param port port |
Soohwan Kim |
0:6f28332c466f | 232 | * @ returns true if successful |
Soohwan Kim |
0:6f28332c466f | 233 | */ |
Soohwan Kim |
0:6f28332c466f | 234 | bool connect(int socket, const char * host, int port, int timeout_ms = 10*1000); |
Soohwan Kim |
0:6f28332c466f | 235 | |
Soohwan Kim |
0:6f28332c466f | 236 | /* |
Soohwan Kim |
0:6f28332c466f | 237 | * Set the protocol (UDP or TCP) |
Soohwan Kim |
0:6f28332c466f | 238 | * |
Soohwan Kim |
0:6f28332c466f | 239 | * @param p protocol |
Soohwan Kim |
0:6f28332c466f | 240 | * @ returns true if successful |
Soohwan Kim |
0:6f28332c466f | 241 | */ |
Soohwan Kim |
0:6f28332c466f | 242 | bool setProtocol(int socket, Protocol p); |
Soohwan Kim |
0:6f28332c466f | 243 | |
Soohwan Kim |
0:6f28332c466f | 244 | /* |
Soohwan Kim |
0:6f28332c466f | 245 | * Reset the W5500 |
Soohwan Kim |
0:6f28332c466f | 246 | */ |
Soohwan Kim |
0:6f28332c466f | 247 | void reset(); |
Soohwan Kim |
0:6f28332c466f | 248 | |
Soohwan Kim |
0:6f28332c466f | 249 | int wait_readable(int socket, int wait_time_ms, int req_size = 0); |
Soohwan Kim |
0:6f28332c466f | 250 | |
Soohwan Kim |
0:6f28332c466f | 251 | int wait_writeable(int socket, int wait_time_ms, int req_size = 0); |
Soohwan Kim |
0:6f28332c466f | 252 | |
Soohwan Kim |
0:6f28332c466f | 253 | /* |
Soohwan Kim |
8:4c02de1dbf3a | 254 | * Check if an ethernet link is pressent or not. |
Soohwan Kim |
8:4c02de1dbf3a | 255 | * |
Soohwan Kim |
8:4c02de1dbf3a | 256 | * @returns true if successful |
Soohwan Kim |
8:4c02de1dbf3a | 257 | */ |
Soohwan Kim |
8:4c02de1dbf3a | 258 | bool link(int wait_time_ms= 3*1000); |
Soohwan Kim |
8:4c02de1dbf3a | 259 | |
Soohwan Kim |
8:4c02de1dbf3a | 260 | /* |
Soohwan Kim |
8:4c02de1dbf3a | 261 | * Sets the speed and duplex parameters of an ethernet link. |
Soohwan Kim |
8:4c02de1dbf3a | 262 | * |
Soohwan Kim |
8:4c02de1dbf3a | 263 | * @returns true if successful |
Soohwan Kim |
8:4c02de1dbf3a | 264 | */ |
Soohwan Kim |
8:4c02de1dbf3a | 265 | void set_link(PHYMode phymode); |
Soohwan Kim |
8:4c02de1dbf3a | 266 | |
Soohwan Kim |
8:4c02de1dbf3a | 267 | /* |
Soohwan Kim |
0:6f28332c466f | 268 | * Check if a tcp link is active |
Soohwan Kim |
0:6f28332c466f | 269 | * |
Soohwan Kim |
0:6f28332c466f | 270 | * @returns true if successful |
Soohwan Kim |
0:6f28332c466f | 271 | */ |
Soohwan Kim |
0:6f28332c466f | 272 | bool is_connected(int socket); |
Soohwan Kim |
0:6f28332c466f | 273 | |
Soohwan Kim |
0:6f28332c466f | 274 | /* |
Soohwan Kim |
0:6f28332c466f | 275 | * Close a tcp connection |
Soohwan Kim |
0:6f28332c466f | 276 | * |
Soohwan Kim |
0:6f28332c466f | 277 | * @ returns true if successful |
Soohwan Kim |
0:6f28332c466f | 278 | */ |
Soohwan Kim |
0:6f28332c466f | 279 | bool close(int socket); |
Soohwan Kim |
0:6f28332c466f | 280 | |
Soohwan Kim |
0:6f28332c466f | 281 | /* |
Soohwan Kim |
0:6f28332c466f | 282 | * @param str string to be sent |
Soohwan Kim |
0:6f28332c466f | 283 | * @param len string length |
Soohwan Kim |
0:6f28332c466f | 284 | */ |
Soohwan Kim |
0:6f28332c466f | 285 | int send(int socket, const char * str, int len); |
Soohwan Kim |
0:6f28332c466f | 286 | |
Soohwan Kim |
0:6f28332c466f | 287 | int recv(int socket, char* buf, int len); |
Soohwan Kim |
0:6f28332c466f | 288 | |
Soohwan Kim |
0:6f28332c466f | 289 | /* |
Soohwan Kim |
0:6f28332c466f | 290 | * Return true if the module is using dhcp |
Soohwan Kim |
0:6f28332c466f | 291 | * |
Soohwan Kim |
0:6f28332c466f | 292 | * @returns true if the module is using dhcp |
Soohwan Kim |
0:6f28332c466f | 293 | */ |
Soohwan Kim |
0:6f28332c466f | 294 | bool isDHCP() { |
Soohwan Kim |
0:6f28332c466f | 295 | return dhcp; |
Soohwan Kim |
0:6f28332c466f | 296 | } |
Soohwan Kim |
0:6f28332c466f | 297 | |
Soohwan Kim |
0:6f28332c466f | 298 | bool gethostbyname(const char* host, uint32_t* ip); |
Soohwan Kim |
0:6f28332c466f | 299 | |
Soohwan Kim |
0:6f28332c466f | 300 | static WIZnet_Chip * getInstance() { |
Soohwan Kim |
0:6f28332c466f | 301 | return inst; |
Soohwan Kim |
0:6f28332c466f | 302 | }; |
Soohwan Kim |
0:6f28332c466f | 303 | |
Soohwan Kim |
0:6f28332c466f | 304 | int new_socket(); |
Soohwan Kim |
0:6f28332c466f | 305 | uint16_t new_port(); |
Soohwan Kim |
0:6f28332c466f | 306 | void scmd(int socket, Command cmd); |
Soohwan Kim |
0:6f28332c466f | 307 | |
Soohwan Kim |
0:6f28332c466f | 308 | template<typename T> |
Soohwan Kim |
0:6f28332c466f | 309 | void sreg(int socket, uint16_t addr, T data) { |
Soohwan Kim |
0:6f28332c466f | 310 | reg_wr<T>(addr, (0x0C + (socket << 5)), data); |
Soohwan Kim |
0:6f28332c466f | 311 | } |
Soohwan Kim |
0:6f28332c466f | 312 | |
Soohwan Kim |
0:6f28332c466f | 313 | template<typename T> |
Soohwan Kim |
0:6f28332c466f | 314 | T sreg(int socket, uint16_t addr) { |
Soohwan Kim |
0:6f28332c466f | 315 | return reg_rd<T>(addr, (0x08 + (socket << 5))); |
Soohwan Kim |
0:6f28332c466f | 316 | } |
Soohwan Kim |
0:6f28332c466f | 317 | |
Soohwan Kim |
0:6f28332c466f | 318 | template<typename T> |
Soohwan Kim |
0:6f28332c466f | 319 | void reg_wr(uint16_t addr, T data) { |
Soohwan Kim |
0:6f28332c466f | 320 | return reg_wr(addr, 0x04, data); |
Soohwan Kim |
0:6f28332c466f | 321 | } |
Soohwan Kim |
0:6f28332c466f | 322 | |
Soohwan Kim |
0:6f28332c466f | 323 | template<typename T> |
Soohwan Kim |
0:6f28332c466f | 324 | void reg_wr(uint16_t addr, uint8_t cb, T data) { |
Soohwan Kim |
0:6f28332c466f | 325 | uint8_t buf[sizeof(T)]; |
Soohwan Kim |
0:6f28332c466f | 326 | *reinterpret_cast<T*>(buf) = data; |
Soohwan Kim |
0:6f28332c466f | 327 | for(int i = 0; i < sizeof(buf)/2; i++) { // Little Endian to Big Endian |
Soohwan Kim |
0:6f28332c466f | 328 | uint8_t t = buf[i]; |
Soohwan Kim |
0:6f28332c466f | 329 | buf[i] = buf[sizeof(buf)-1-i]; |
Soohwan Kim |
0:6f28332c466f | 330 | buf[sizeof(buf)-1-i] = t; |
Soohwan Kim |
0:6f28332c466f | 331 | } |
Soohwan Kim |
0:6f28332c466f | 332 | spi_write(addr, cb, buf, sizeof(buf)); |
Soohwan Kim |
0:6f28332c466f | 333 | } |
Soohwan Kim |
0:6f28332c466f | 334 | |
Soohwan Kim |
0:6f28332c466f | 335 | template<typename T> |
Soohwan Kim |
0:6f28332c466f | 336 | T reg_rd(uint16_t addr) { |
Soohwan Kim |
0:6f28332c466f | 337 | return reg_rd<T>(addr, 0x00); |
Soohwan Kim |
0:6f28332c466f | 338 | } |
Soohwan Kim |
0:6f28332c466f | 339 | |
Soohwan Kim |
0:6f28332c466f | 340 | template<typename T> |
Soohwan Kim |
0:6f28332c466f | 341 | T reg_rd(uint16_t addr, uint8_t cb) { |
Soohwan Kim |
0:6f28332c466f | 342 | uint8_t buf[sizeof(T)]; |
Soohwan Kim |
0:6f28332c466f | 343 | spi_read(addr, cb, buf, sizeof(buf)); |
Soohwan Kim |
0:6f28332c466f | 344 | for(int i = 0; i < sizeof(buf)/2; i++) { // Big Endian to Little Endian |
Soohwan Kim |
0:6f28332c466f | 345 | uint8_t t = buf[i]; |
Soohwan Kim |
0:6f28332c466f | 346 | buf[i] = buf[sizeof(buf)-1-i]; |
Soohwan Kim |
0:6f28332c466f | 347 | buf[sizeof(buf)-1-i] = t; |
Soohwan Kim |
0:6f28332c466f | 348 | } |
Soohwan Kim |
0:6f28332c466f | 349 | return *reinterpret_cast<T*>(buf); |
Soohwan Kim |
0:6f28332c466f | 350 | } |
Soohwan Kim |
0:6f28332c466f | 351 | |
embeddist | 14:2101ab5ee40f | 352 | void reg_rd_mac(uint16_t addr, uint8_t* data); |
embeddist | 14:2101ab5ee40f | 353 | /* { |
Soohwan Kim |
0:6f28332c466f | 354 | spi_read(addr, 0x00, data, 6); |
embeddist | 14:2101ab5ee40f | 355 | }*/ |
Soohwan Kim |
0:6f28332c466f | 356 | |
embeddist | 14:2101ab5ee40f | 357 | void reg_wr_ip(uint16_t addr, uint8_t cb, const char* ip); |
embeddist | 14:2101ab5ee40f | 358 | /* { |
Soohwan Kim |
0:6f28332c466f | 359 | uint8_t buf[4]; |
Soohwan Kim |
0:6f28332c466f | 360 | char* p = (char*)ip; |
Soohwan Kim |
0:6f28332c466f | 361 | for(int i = 0; i < 4; i++) { |
Soohwan Kim |
0:6f28332c466f | 362 | buf[i] = atoi(p); |
Soohwan Kim |
0:6f28332c466f | 363 | p = strchr(p, '.'); |
Soohwan Kim |
0:6f28332c466f | 364 | if (p == NULL) { |
Soohwan Kim |
0:6f28332c466f | 365 | break; |
Soohwan Kim |
0:6f28332c466f | 366 | } |
Soohwan Kim |
0:6f28332c466f | 367 | p++; |
Soohwan Kim |
0:6f28332c466f | 368 | } |
Soohwan Kim |
0:6f28332c466f | 369 | spi_write(addr, cb, buf, sizeof(buf)); |
Soohwan Kim |
0:6f28332c466f | 370 | } |
embeddist | 14:2101ab5ee40f | 371 | */ |
embeddist | 14:2101ab5ee40f | 372 | void sreg_ip(int socket, uint16_t addr, const char* ip); |
embeddist | 14:2101ab5ee40f | 373 | /* { |
Soohwan Kim |
0:6f28332c466f | 374 | reg_wr_ip(addr, (0x0C + (socket << 5)), ip); |
embeddist | 14:2101ab5ee40f | 375 | }*/ |
Soohwan Kim |
4:4930f81bbe98 | 376 | |
embeddist | 14:2101ab5ee40f | 377 | void reg_rd_ip_byte(uint16_t addr, uint8_t* data); |
embeddist | 14:2101ab5ee40f | 378 | /* { |
Soohwan Kim |
4:4930f81bbe98 | 379 | spi_read(addr, 0x00, data, 4); |
embeddist | 14:2101ab5ee40f | 380 | }*/ |
Soohwan Kim |
4:4930f81bbe98 | 381 | |
embeddist | 14:2101ab5ee40f | 382 | void reg_wr_ip_byte(uint16_t addr, uint8_t* data); |
embeddist | 14:2101ab5ee40f | 383 | /* { |
Soohwan Kim |
4:4930f81bbe98 | 384 | spi_write(addr, 0x04, data, 4); |
embeddist | 14:2101ab5ee40f | 385 | }*/ |
Soohwan Kim |
4:4930f81bbe98 | 386 | |
Soohwan Kim |
4:4930f81bbe98 | 387 | ///////////////////////////////// |
Soohwan Kim |
4:4930f81bbe98 | 388 | // Common Register I/O function // |
Soohwan Kim |
4:4930f81bbe98 | 389 | ///////////////////////////////// |
Soohwan Kim |
4:4930f81bbe98 | 390 | /** |
Soohwan Kim |
4:4930f81bbe98 | 391 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 392 | * @brief Set Mode Register |
Soohwan Kim |
4:4930f81bbe98 | 393 | * @param (uint8_t)mr The value to be set. |
Soohwan Kim |
4:4930f81bbe98 | 394 | * @sa getMR() |
Soohwan Kim |
4:4930f81bbe98 | 395 | */ |
Soohwan Kim |
4:4930f81bbe98 | 396 | void setMR(uint8_t mr) { |
Soohwan Kim |
4:4930f81bbe98 | 397 | reg_wr<uint8_t>(MR,mr); |
Soohwan Kim |
4:4930f81bbe98 | 398 | } |
Soohwan Kim |
4:4930f81bbe98 | 399 | |
Soohwan Kim |
4:4930f81bbe98 | 400 | |
Soohwan Kim |
4:4930f81bbe98 | 401 | /** |
Soohwan Kim |
4:4930f81bbe98 | 402 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 403 | * @brief Get Mode Register |
Soohwan Kim |
4:4930f81bbe98 | 404 | * @return uint8_t. The value of Mode register. |
Soohwan Kim |
4:4930f81bbe98 | 405 | * @sa setMR() |
Soohwan Kim |
4:4930f81bbe98 | 406 | */ |
Soohwan Kim |
4:4930f81bbe98 | 407 | uint8_t getMR() { |
Soohwan Kim |
4:4930f81bbe98 | 408 | return reg_rd<uint8_t>(MR); |
Soohwan Kim |
4:4930f81bbe98 | 409 | } |
Soohwan Kim |
4:4930f81bbe98 | 410 | |
Soohwan Kim |
4:4930f81bbe98 | 411 | /** |
Soohwan Kim |
4:4930f81bbe98 | 412 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 413 | * @brief Set gateway IP address |
Soohwan Kim |
4:4930f81bbe98 | 414 | * @param (uint8_t*)gar Pointer variable to set gateway IP address. It should be allocated 4 bytes. |
Soohwan Kim |
4:4930f81bbe98 | 415 | * @sa getGAR() |
Soohwan Kim |
4:4930f81bbe98 | 416 | */ |
Soohwan Kim |
4:4930f81bbe98 | 417 | void setGAR(uint8_t * gar) { |
Soohwan Kim |
4:4930f81bbe98 | 418 | reg_wr_ip_byte(GAR,gar); |
Soohwan Kim |
4:4930f81bbe98 | 419 | } |
Soohwan Kim |
4:4930f81bbe98 | 420 | |
Soohwan Kim |
4:4930f81bbe98 | 421 | /** |
Soohwan Kim |
4:4930f81bbe98 | 422 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 423 | * @brief Get gateway IP address |
Soohwan Kim |
4:4930f81bbe98 | 424 | * @param (uint8_t*)gar Pointer variable to get gateway IP address. It should be allocated 4 bytes. |
Soohwan Kim |
4:4930f81bbe98 | 425 | * @sa setGAR() |
Soohwan Kim |
4:4930f81bbe98 | 426 | */ |
Soohwan Kim |
4:4930f81bbe98 | 427 | void getGAR(uint8_t * gar) { |
Soohwan Kim |
4:4930f81bbe98 | 428 | reg_rd_ip_byte(GAR,gar); |
Soohwan Kim |
4:4930f81bbe98 | 429 | } |
Soohwan Kim |
4:4930f81bbe98 | 430 | |
Soohwan Kim |
4:4930f81bbe98 | 431 | /** |
Soohwan Kim |
4:4930f81bbe98 | 432 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 433 | * @brief Set subnet mask address |
Soohwan Kim |
4:4930f81bbe98 | 434 | * @param (uint8_t*)subr Pointer variable to set subnet mask address. It should be allocated 4 bytes. |
Soohwan Kim |
4:4930f81bbe98 | 435 | * @sa getSUBR() |
Soohwan Kim |
4:4930f81bbe98 | 436 | */ |
Soohwan Kim |
4:4930f81bbe98 | 437 | void setSUBR(uint8_t * subr) { |
Soohwan Kim |
4:4930f81bbe98 | 438 | reg_wr_ip_byte(SUBR, subr); |
Soohwan Kim |
4:4930f81bbe98 | 439 | } |
Soohwan Kim |
4:4930f81bbe98 | 440 | |
Soohwan Kim |
4:4930f81bbe98 | 441 | |
Soohwan Kim |
4:4930f81bbe98 | 442 | /** |
Soohwan Kim |
4:4930f81bbe98 | 443 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 444 | * @brief Get subnet mask address |
Soohwan Kim |
4:4930f81bbe98 | 445 | * @param (uint8_t*)subr Pointer variable to get subnet mask address. It should be allocated 4 bytes. |
Soohwan Kim |
4:4930f81bbe98 | 446 | * @sa setSUBR() |
Soohwan Kim |
4:4930f81bbe98 | 447 | */ |
Soohwan Kim |
4:4930f81bbe98 | 448 | void getSUBR(uint8_t * subr) { |
Soohwan Kim |
4:4930f81bbe98 | 449 | reg_rd_ip_byte(SUBR, subr); |
Soohwan Kim |
4:4930f81bbe98 | 450 | } |
Soohwan Kim |
4:4930f81bbe98 | 451 | |
Soohwan Kim |
4:4930f81bbe98 | 452 | /** |
Soohwan Kim |
4:4930f81bbe98 | 453 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 454 | * @brief Set local MAC address |
Soohwan Kim |
4:4930f81bbe98 | 455 | * @param (uint8_t*)shar Pointer variable to set local MAC address. It should be allocated 6 bytes. |
Soohwan Kim |
4:4930f81bbe98 | 456 | * @sa getSHAR() |
Soohwan Kim |
4:4930f81bbe98 | 457 | */ |
Soohwan Kim |
4:4930f81bbe98 | 458 | void setSHAR(uint8_t * shar) { |
Soohwan Kim |
4:4930f81bbe98 | 459 | reg_wr_mac(SHAR, shar); |
Soohwan Kim |
4:4930f81bbe98 | 460 | } |
Soohwan Kim |
4:4930f81bbe98 | 461 | |
Soohwan Kim |
4:4930f81bbe98 | 462 | /** |
Soohwan Kim |
4:4930f81bbe98 | 463 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 464 | * @brief Get local MAC address |
Soohwan Kim |
4:4930f81bbe98 | 465 | * @param (uint8_t*)shar Pointer variable to get local MAC address. It should be allocated 6 bytes. |
Soohwan Kim |
4:4930f81bbe98 | 466 | * @sa setSHAR() |
Soohwan Kim |
4:4930f81bbe98 | 467 | */ |
Soohwan Kim |
4:4930f81bbe98 | 468 | void getSHAR(uint8_t * shar) { |
Soohwan Kim |
4:4930f81bbe98 | 469 | reg_rd_mac(SHAR, shar); |
Soohwan Kim |
4:4930f81bbe98 | 470 | } |
Soohwan Kim |
4:4930f81bbe98 | 471 | |
Soohwan Kim |
4:4930f81bbe98 | 472 | /** |
Soohwan Kim |
4:4930f81bbe98 | 473 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 474 | * @brief Set local IP address |
Soohwan Kim |
4:4930f81bbe98 | 475 | * @param (uint8_t*)sipr Pointer variable to set local IP address. It should be allocated 4 bytes. |
Soohwan Kim |
4:4930f81bbe98 | 476 | * @sa getSIPR() |
Soohwan Kim |
4:4930f81bbe98 | 477 | */ |
Soohwan Kim |
4:4930f81bbe98 | 478 | void setSIPR(uint8_t * sipr) { |
Soohwan Kim |
4:4930f81bbe98 | 479 | reg_wr_ip_byte(SIPR, sipr); |
Soohwan Kim |
4:4930f81bbe98 | 480 | } |
Soohwan Kim |
4:4930f81bbe98 | 481 | |
Soohwan Kim |
4:4930f81bbe98 | 482 | /** |
Soohwan Kim |
4:4930f81bbe98 | 483 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 484 | * @brief Get local IP address |
Soohwan Kim |
4:4930f81bbe98 | 485 | * @param (uint8_t*)sipr Pointer variable to get local IP address. It should be allocated 4 bytes. |
Soohwan Kim |
4:4930f81bbe98 | 486 | * @sa setSIPR() |
Soohwan Kim |
4:4930f81bbe98 | 487 | */ |
Soohwan Kim |
4:4930f81bbe98 | 488 | void getSIPR(uint8_t * sipr) { |
Soohwan Kim |
4:4930f81bbe98 | 489 | reg_rd_ip_byte(SIPR, sipr); |
Soohwan Kim |
4:4930f81bbe98 | 490 | } |
Soohwan Kim |
4:4930f81bbe98 | 491 | |
Soohwan Kim |
4:4930f81bbe98 | 492 | /** |
Soohwan Kim |
4:4930f81bbe98 | 493 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 494 | * @brief Set @ref IR register |
Soohwan Kim |
4:4930f81bbe98 | 495 | * @param (uint8_t)ir Value to set @ref IR register. |
Soohwan Kim |
4:4930f81bbe98 | 496 | * @sa getIR() |
Soohwan Kim |
4:4930f81bbe98 | 497 | */ |
Soohwan Kim |
4:4930f81bbe98 | 498 | void setIR(uint8_t ir) { |
Soohwan Kim |
4:4930f81bbe98 | 499 | reg_wr<uint8_t>(IR, (ir & 0xF0)); |
Soohwan Kim |
4:4930f81bbe98 | 500 | } |
Soohwan Kim |
4:4930f81bbe98 | 501 | |
Soohwan Kim |
4:4930f81bbe98 | 502 | /** |
Soohwan Kim |
4:4930f81bbe98 | 503 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 504 | * @brief Get @ref IR register |
Soohwan Kim |
4:4930f81bbe98 | 505 | * @return uint8_t. Value of @ref IR register. |
Soohwan Kim |
4:4930f81bbe98 | 506 | * @sa setIR() |
Soohwan Kim |
4:4930f81bbe98 | 507 | */ |
Soohwan Kim |
4:4930f81bbe98 | 508 | uint8_t getIR() { |
Soohwan Kim |
4:4930f81bbe98 | 509 | return reg_rd<uint8_t>(IR & 0xF0); |
Soohwan Kim |
4:4930f81bbe98 | 510 | } |
Soohwan Kim |
4:4930f81bbe98 | 511 | |
Soohwan Kim |
4:4930f81bbe98 | 512 | /** |
Soohwan Kim |
4:4930f81bbe98 | 513 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 514 | * @brief Set @ref IMR register |
Soohwan Kim |
4:4930f81bbe98 | 515 | * @param (uint8_t)imr Value to set @ref IMR register. |
Soohwan Kim |
4:4930f81bbe98 | 516 | * @sa getIMR() |
Soohwan Kim |
4:4930f81bbe98 | 517 | */ |
Soohwan Kim |
4:4930f81bbe98 | 518 | void setIMR(uint8_t imr) { |
Soohwan Kim |
4:4930f81bbe98 | 519 | reg_wr<uint8_t>(IMR, imr); |
Soohwan Kim |
4:4930f81bbe98 | 520 | } |
Soohwan Kim |
4:4930f81bbe98 | 521 | |
Soohwan Kim |
4:4930f81bbe98 | 522 | /** |
Soohwan Kim |
4:4930f81bbe98 | 523 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 524 | * @brief Get @ref IMR register |
Soohwan Kim |
4:4930f81bbe98 | 525 | * @return uint8_t. Value of @ref IMR register. |
Soohwan Kim |
4:4930f81bbe98 | 526 | * @sa setIMR() |
Soohwan Kim |
4:4930f81bbe98 | 527 | */ |
Soohwan Kim |
4:4930f81bbe98 | 528 | uint8_t getIMR() { |
Soohwan Kim |
4:4930f81bbe98 | 529 | return reg_rd<uint8_t>(IMR); |
Soohwan Kim |
4:4930f81bbe98 | 530 | } |
Soohwan Kim |
4:4930f81bbe98 | 531 | |
Soohwan Kim |
4:4930f81bbe98 | 532 | |
Soohwan Kim |
4:4930f81bbe98 | 533 | /** |
Soohwan Kim |
4:4930f81bbe98 | 534 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 535 | * @brief Set @ref SIR register |
Soohwan Kim |
4:4930f81bbe98 | 536 | * @param (uint8_t)sir Value to set @ref SIR register. |
Soohwan Kim |
4:4930f81bbe98 | 537 | * @sa getSIR() |
Soohwan Kim |
4:4930f81bbe98 | 538 | */ |
Soohwan Kim |
4:4930f81bbe98 | 539 | void setSIR(uint8_t sir) { |
Soohwan Kim |
4:4930f81bbe98 | 540 | reg_wr<uint8_t>(SIR, sir); |
Soohwan Kim |
4:4930f81bbe98 | 541 | } |
Soohwan Kim |
4:4930f81bbe98 | 542 | |
Soohwan Kim |
4:4930f81bbe98 | 543 | /** |
Soohwan Kim |
4:4930f81bbe98 | 544 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 545 | * @brief Get @ref SIR register |
Soohwan Kim |
4:4930f81bbe98 | 546 | * @return uint8_t. Value of @ref SIR register. |
Soohwan Kim |
4:4930f81bbe98 | 547 | * @sa setSIR() |
Soohwan Kim |
4:4930f81bbe98 | 548 | */ |
Soohwan Kim |
4:4930f81bbe98 | 549 | uint8_t getSIR() { |
Soohwan Kim |
4:4930f81bbe98 | 550 | return reg_rd<uint8_t>(SIR); |
Soohwan Kim |
4:4930f81bbe98 | 551 | } |
Soohwan Kim |
4:4930f81bbe98 | 552 | /** |
Soohwan Kim |
4:4930f81bbe98 | 553 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 554 | * @brief Set @ref SIMR register |
Soohwan Kim |
4:4930f81bbe98 | 555 | * @param (uint8_t)simr Value to set @ref SIMR register. |
Soohwan Kim |
4:4930f81bbe98 | 556 | * @sa getSIMR() |
Soohwan Kim |
4:4930f81bbe98 | 557 | */ |
Soohwan Kim |
4:4930f81bbe98 | 558 | void setSIMR(uint8_t simr) { |
Soohwan Kim |
4:4930f81bbe98 | 559 | reg_wr<uint8_t>(SIMR, simr); |
Soohwan Kim |
4:4930f81bbe98 | 560 | } |
Soohwan Kim |
4:4930f81bbe98 | 561 | |
Soohwan Kim |
4:4930f81bbe98 | 562 | /** |
Soohwan Kim |
4:4930f81bbe98 | 563 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 564 | * @brief Get @ref SIMR register |
Soohwan Kim |
4:4930f81bbe98 | 565 | * @return uint8_t. Value of @ref SIMR register. |
Soohwan Kim |
4:4930f81bbe98 | 566 | * @sa setSIMR() |
Soohwan Kim |
4:4930f81bbe98 | 567 | */ |
Soohwan Kim |
4:4930f81bbe98 | 568 | uint8_t getSIMR() { |
Soohwan Kim |
4:4930f81bbe98 | 569 | return reg_rd<uint8_t>(SIMR); |
Soohwan Kim |
4:4930f81bbe98 | 570 | } |
Soohwan Kim |
4:4930f81bbe98 | 571 | |
Soohwan Kim |
4:4930f81bbe98 | 572 | /** |
Soohwan Kim |
4:4930f81bbe98 | 573 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 574 | * @brief Set @ref RTR register |
Soohwan Kim |
4:4930f81bbe98 | 575 | * @param (uint16_t)rtr Value to set @ref RTR register. |
Soohwan Kim |
4:4930f81bbe98 | 576 | * @sa getRTR() |
Soohwan Kim |
4:4930f81bbe98 | 577 | */ |
Soohwan Kim |
4:4930f81bbe98 | 578 | void setRTR(uint16_t rtr) { |
Soohwan Kim |
4:4930f81bbe98 | 579 | reg_wr<uint16_t>(RTR, rtr); |
Soohwan Kim |
4:4930f81bbe98 | 580 | } |
Soohwan Kim |
4:4930f81bbe98 | 581 | |
Soohwan Kim |
4:4930f81bbe98 | 582 | /** |
Soohwan Kim |
4:4930f81bbe98 | 583 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 584 | * @brief Get @ref RTR register |
Soohwan Kim |
4:4930f81bbe98 | 585 | * @return uint16_t. Value of @ref RTR register. |
Soohwan Kim |
4:4930f81bbe98 | 586 | * @sa setRTR() |
Soohwan Kim |
4:4930f81bbe98 | 587 | */ |
Soohwan Kim |
4:4930f81bbe98 | 588 | uint16_t getRTR() { |
Soohwan Kim |
4:4930f81bbe98 | 589 | return reg_rd<uint16_t>(RTR); |
Soohwan Kim |
4:4930f81bbe98 | 590 | } |
Soohwan Kim |
4:4930f81bbe98 | 591 | |
Soohwan Kim |
4:4930f81bbe98 | 592 | /** |
Soohwan Kim |
4:4930f81bbe98 | 593 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 594 | * @brief Set @ref RCR register |
Soohwan Kim |
4:4930f81bbe98 | 595 | * @param (uint8_t)rcr Value to set @ref RCR register. |
Soohwan Kim |
4:4930f81bbe98 | 596 | * @sa getRCR() |
Soohwan Kim |
4:4930f81bbe98 | 597 | */ |
Soohwan Kim |
4:4930f81bbe98 | 598 | void setRCR(uint8_t rcr) { |
Soohwan Kim |
4:4930f81bbe98 | 599 | reg_wr<uint8_t>(RCR, rcr); |
Soohwan Kim |
4:4930f81bbe98 | 600 | } |
Soohwan Kim |
4:4930f81bbe98 | 601 | |
Soohwan Kim |
4:4930f81bbe98 | 602 | /** |
Soohwan Kim |
4:4930f81bbe98 | 603 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 604 | * @brief Get @ref RCR register |
Soohwan Kim |
4:4930f81bbe98 | 605 | * @return uint8_t. Value of @ref RCR register. |
Soohwan Kim |
4:4930f81bbe98 | 606 | * @sa setRCR() |
Soohwan Kim |
4:4930f81bbe98 | 607 | */ |
Soohwan Kim |
4:4930f81bbe98 | 608 | uint8_t getRCR() { |
Soohwan Kim |
4:4930f81bbe98 | 609 | return reg_rd<uint8_t>(RCR); |
Soohwan Kim |
4:4930f81bbe98 | 610 | } |
Soohwan Kim |
4:4930f81bbe98 | 611 | |
Soohwan Kim |
4:4930f81bbe98 | 612 | //================================================== test done =========================================================== |
Soohwan Kim |
4:4930f81bbe98 | 613 | |
Soohwan Kim |
4:4930f81bbe98 | 614 | /** |
Soohwan Kim |
4:4930f81bbe98 | 615 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 616 | * @brief Set @ref PHYCFGR register |
Soohwan Kim |
4:4930f81bbe98 | 617 | * @param (uint8_t)phycfgr Value to set @ref PHYCFGR register. |
Soohwan Kim |
12:99e8386ba225 | 618 | * @sa setPHYCFGR() |
Soohwan Kim |
4:4930f81bbe98 | 619 | */ |
Soohwan Kim |
4:4930f81bbe98 | 620 | void setPHYCFGR(uint8_t phycfgr) { |
Soohwan Kim |
4:4930f81bbe98 | 621 | reg_wr<uint8_t>(PHYCFGR, phycfgr); |
Soohwan Kim |
4:4930f81bbe98 | 622 | } |
Soohwan Kim |
4:4930f81bbe98 | 623 | |
Soohwan Kim |
4:4930f81bbe98 | 624 | /** |
Soohwan Kim |
4:4930f81bbe98 | 625 | * @ingroup Common_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 626 | * @brief Get @ref PHYCFGR register |
Soohwan Kim |
4:4930f81bbe98 | 627 | * @return uint8_t. Value of @ref PHYCFGR register. |
Soohwan Kim |
12:99e8386ba225 | 628 | * @sa getPHYCFGR() |
Soohwan Kim |
4:4930f81bbe98 | 629 | */ |
embeddist | 14:2101ab5ee40f | 630 | uint8_t getPHYCFGR() { |
Soohwan Kim |
4:4930f81bbe98 | 631 | return reg_rd<uint8_t>(PHYCFGR); |
Soohwan Kim |
4:4930f81bbe98 | 632 | } |
Soohwan Kim |
4:4930f81bbe98 | 633 | |
Soohwan Kim |
4:4930f81bbe98 | 634 | |
Soohwan Kim |
4:4930f81bbe98 | 635 | ///////////////////////////////////// |
Soohwan Kim |
4:4930f81bbe98 | 636 | |
Soohwan Kim |
4:4930f81bbe98 | 637 | /////////////////////////////////// |
Soohwan Kim |
4:4930f81bbe98 | 638 | // Socket N register I/O function // |
Soohwan Kim |
4:4930f81bbe98 | 639 | /////////////////////////////////// |
Soohwan Kim |
4:4930f81bbe98 | 640 | /** |
Soohwan Kim |
4:4930f81bbe98 | 641 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 642 | * @brief Set @ref Sn_MR register |
Soohwan Kim |
4:4930f81bbe98 | 643 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 644 | * @param (uint8_t)mr Value to set @ref Sn_MR |
Soohwan Kim |
4:4930f81bbe98 | 645 | * @sa getSn_MR() |
Soohwan Kim |
4:4930f81bbe98 | 646 | */ |
Soohwan Kim |
4:4930f81bbe98 | 647 | void setSn_MR(uint8_t sn, uint8_t mr) { |
Soohwan Kim |
4:4930f81bbe98 | 648 | sreg<uint8_t>(sn, MR, mr); |
Soohwan Kim |
4:4930f81bbe98 | 649 | } |
Soohwan Kim |
4:4930f81bbe98 | 650 | |
Soohwan Kim |
4:4930f81bbe98 | 651 | /** |
Soohwan Kim |
4:4930f81bbe98 | 652 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 653 | * @brief Get @ref Sn_MR register |
Soohwan Kim |
4:4930f81bbe98 | 654 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 655 | * @return uint8_t. Value of @ref Sn_MR. |
Soohwan Kim |
4:4930f81bbe98 | 656 | * @sa setSn_MR() |
Soohwan Kim |
4:4930f81bbe98 | 657 | */ |
Soohwan Kim |
4:4930f81bbe98 | 658 | uint8_t getSn_MR(uint8_t sn) { |
Soohwan Kim |
4:4930f81bbe98 | 659 | return sreg<uint8_t>(sn, Sn_MR); |
Soohwan Kim |
4:4930f81bbe98 | 660 | } |
Soohwan Kim |
4:4930f81bbe98 | 661 | |
Soohwan Kim |
4:4930f81bbe98 | 662 | /** |
Soohwan Kim |
4:4930f81bbe98 | 663 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 664 | * @brief Set @ref Sn_CR register |
Soohwan Kim |
4:4930f81bbe98 | 665 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 666 | * @param (uint8_t)cr Value to set @ref Sn_CR |
Soohwan Kim |
4:4930f81bbe98 | 667 | * @sa getSn_CR() |
Soohwan Kim |
4:4930f81bbe98 | 668 | */ |
Soohwan Kim |
4:4930f81bbe98 | 669 | void setSn_CR(uint8_t sn, uint8_t cr) { |
Soohwan Kim |
4:4930f81bbe98 | 670 | sreg<uint8_t>(sn, Sn_CR, cr); |
Soohwan Kim |
4:4930f81bbe98 | 671 | } |
Soohwan Kim |
4:4930f81bbe98 | 672 | |
Soohwan Kim |
4:4930f81bbe98 | 673 | /** |
Soohwan Kim |
4:4930f81bbe98 | 674 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 675 | * @brief Get @ref Sn_CR register |
Soohwan Kim |
4:4930f81bbe98 | 676 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 677 | * @return uint8_t. Value of @ref Sn_CR. |
Soohwan Kim |
4:4930f81bbe98 | 678 | * @sa setSn_CR() |
Soohwan Kim |
4:4930f81bbe98 | 679 | */ |
Soohwan Kim |
4:4930f81bbe98 | 680 | uint8_t getSn_CR(uint8_t sn) { |
Soohwan Kim |
4:4930f81bbe98 | 681 | return sreg<uint8_t>(sn, Sn_CR); |
Soohwan Kim |
4:4930f81bbe98 | 682 | } |
Soohwan Kim |
4:4930f81bbe98 | 683 | |
Soohwan Kim |
4:4930f81bbe98 | 684 | /** |
Soohwan Kim |
4:4930f81bbe98 | 685 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 686 | * @brief Set @ref Sn_IR register |
Soohwan Kim |
4:4930f81bbe98 | 687 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 688 | * @param (uint8_t)ir Value to set @ref Sn_IR |
Soohwan Kim |
4:4930f81bbe98 | 689 | * @sa getSn_IR() |
Soohwan Kim |
4:4930f81bbe98 | 690 | */ |
Soohwan Kim |
4:4930f81bbe98 | 691 | void setSn_IR(uint8_t sn, uint8_t ir) { |
Soohwan Kim |
4:4930f81bbe98 | 692 | sreg<uint8_t>(sn, Sn_IR, (ir & 0x1F)); |
Soohwan Kim |
4:4930f81bbe98 | 693 | } |
Soohwan Kim |
4:4930f81bbe98 | 694 | |
Soohwan Kim |
4:4930f81bbe98 | 695 | /** |
Soohwan Kim |
4:4930f81bbe98 | 696 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 697 | * @brief Get @ref Sn_IR register |
Soohwan Kim |
4:4930f81bbe98 | 698 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 699 | * @return uint8_t. Value of @ref Sn_IR. |
Soohwan Kim |
4:4930f81bbe98 | 700 | * @sa setSn_IR() |
Soohwan Kim |
4:4930f81bbe98 | 701 | */ |
Soohwan Kim |
4:4930f81bbe98 | 702 | uint8_t getSn_IR(uint8_t sn) { |
Soohwan Kim |
4:4930f81bbe98 | 703 | return (sreg<uint8_t>(sn, Sn_IR)) & 0x1F; |
Soohwan Kim |
4:4930f81bbe98 | 704 | } |
Soohwan Kim |
4:4930f81bbe98 | 705 | |
Soohwan Kim |
4:4930f81bbe98 | 706 | /** |
Soohwan Kim |
4:4930f81bbe98 | 707 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 708 | * @brief Set @ref Sn_IMR register |
Soohwan Kim |
4:4930f81bbe98 | 709 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 710 | * @param (uint8_t)imr Value to set @ref Sn_IMR |
Soohwan Kim |
4:4930f81bbe98 | 711 | * @sa getSn_IMR() |
Soohwan Kim |
4:4930f81bbe98 | 712 | */ |
Soohwan Kim |
4:4930f81bbe98 | 713 | void setSn_IMR(uint8_t sn, uint8_t imr) { |
Soohwan Kim |
4:4930f81bbe98 | 714 | sreg<uint8_t>(sn, Sn_IMR, (imr & 0x1F)); |
Soohwan Kim |
4:4930f81bbe98 | 715 | } |
Soohwan Kim |
4:4930f81bbe98 | 716 | |
Soohwan Kim |
4:4930f81bbe98 | 717 | /** |
Soohwan Kim |
4:4930f81bbe98 | 718 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 719 | * @brief Get @ref Sn_IMR register |
Soohwan Kim |
4:4930f81bbe98 | 720 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 721 | * @return uint8_t. Value of @ref Sn_IMR. |
Soohwan Kim |
4:4930f81bbe98 | 722 | * @sa setSn_IMR() |
Soohwan Kim |
4:4930f81bbe98 | 723 | */ |
Soohwan Kim |
4:4930f81bbe98 | 724 | uint8_t getSn_IMR(uint8_t sn) { |
Soohwan Kim |
4:4930f81bbe98 | 725 | return (sreg<uint8_t>(sn, Sn_IMR)) & 0x1F; |
Soohwan Kim |
4:4930f81bbe98 | 726 | } |
Soohwan Kim |
4:4930f81bbe98 | 727 | |
Soohwan Kim |
4:4930f81bbe98 | 728 | /** |
Soohwan Kim |
4:4930f81bbe98 | 729 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 730 | * @brief Get @ref Sn_SR register |
Soohwan Kim |
4:4930f81bbe98 | 731 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 732 | * @return uint8_t. Value of @ref Sn_SR. |
Soohwan Kim |
4:4930f81bbe98 | 733 | */ |
Soohwan Kim |
4:4930f81bbe98 | 734 | uint8_t getSn_SR(uint8_t sn) { |
Soohwan Kim |
4:4930f81bbe98 | 735 | return sreg<uint8_t>(sn, Sn_SR); |
Soohwan Kim |
4:4930f81bbe98 | 736 | } |
Soohwan Kim |
4:4930f81bbe98 | 737 | |
Soohwan Kim |
4:4930f81bbe98 | 738 | /** |
Soohwan Kim |
4:4930f81bbe98 | 739 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 740 | * @brief Set @ref Sn_PORT register |
Soohwan Kim |
4:4930f81bbe98 | 741 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 742 | * @param (uint16_t)port Value to set @ref Sn_PORT. |
Soohwan Kim |
4:4930f81bbe98 | 743 | * @sa getSn_PORT() |
Soohwan Kim |
4:4930f81bbe98 | 744 | */ |
Soohwan Kim |
4:4930f81bbe98 | 745 | void setSn_PORT(uint8_t sn, uint16_t port) { |
Soohwan Kim |
4:4930f81bbe98 | 746 | sreg<uint16_t>(sn, Sn_PORT, port ); |
Soohwan Kim |
4:4930f81bbe98 | 747 | } |
Soohwan Kim |
4:4930f81bbe98 | 748 | |
Soohwan Kim |
4:4930f81bbe98 | 749 | /** |
Soohwan Kim |
4:4930f81bbe98 | 750 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 751 | * @brief Get @ref Sn_PORT register |
Soohwan Kim |
4:4930f81bbe98 | 752 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 753 | * @return uint16_t. Value of @ref Sn_PORT. |
Soohwan Kim |
4:4930f81bbe98 | 754 | * @sa setSn_PORT() |
Soohwan Kim |
4:4930f81bbe98 | 755 | */ |
Soohwan Kim |
4:4930f81bbe98 | 756 | uint16_t getSn_PORT(uint8_t sn) { |
Soohwan Kim |
4:4930f81bbe98 | 757 | return sreg<uint16_t>(sn, Sn_PORT); |
Soohwan Kim |
4:4930f81bbe98 | 758 | } |
Soohwan Kim |
4:4930f81bbe98 | 759 | |
Soohwan Kim |
4:4930f81bbe98 | 760 | /** |
Soohwan Kim |
4:4930f81bbe98 | 761 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 762 | * @brief Set @ref Sn_DHAR register |
Soohwan Kim |
4:4930f81bbe98 | 763 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 764 | * @param (uint8_t*)dhar Pointer variable to set socket n destination hardware address. It should be allocated 6 bytes. |
Soohwan Kim |
4:4930f81bbe98 | 765 | * @sa getSn_DHAR() |
Soohwan Kim |
4:4930f81bbe98 | 766 | */ |
Soohwan Kim |
4:4930f81bbe98 | 767 | void setSn_DHAR(uint8_t sn, uint8_t * dhar) { |
Soohwan Kim |
4:4930f81bbe98 | 768 | spi_write(Sn_DHAR, (0x0C + (sn << 5)), dhar, 6); |
Soohwan Kim |
4:4930f81bbe98 | 769 | } |
Soohwan Kim |
4:4930f81bbe98 | 770 | |
Soohwan Kim |
4:4930f81bbe98 | 771 | /** |
Soohwan Kim |
4:4930f81bbe98 | 772 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 773 | * @brief Get @ref Sn_MR register |
Soohwan Kim |
4:4930f81bbe98 | 774 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 775 | * @param (uint8_t*)dhar Pointer variable to get socket n destination hardware address. It should be allocated 6 bytes. |
Soohwan Kim |
4:4930f81bbe98 | 776 | * @sa setSn_DHAR() |
Soohwan Kim |
4:4930f81bbe98 | 777 | */ |
Soohwan Kim |
4:4930f81bbe98 | 778 | void getSn_DHAR(uint8_t sn, uint8_t * dhar) { |
Soohwan Kim |
4:4930f81bbe98 | 779 | spi_read(Sn_DHAR, (0x08 + (sn << 5)), dhar, 6); |
Soohwan Kim |
4:4930f81bbe98 | 780 | } |
Soohwan Kim |
4:4930f81bbe98 | 781 | |
Soohwan Kim |
4:4930f81bbe98 | 782 | /** |
Soohwan Kim |
4:4930f81bbe98 | 783 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 784 | * @brief Set @ref Sn_DIPR register |
Soohwan Kim |
4:4930f81bbe98 | 785 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 786 | * @param (uint8_t*)dipr Pointer variable to set socket n destination IP address. It should be allocated 4 bytes. |
Soohwan Kim |
4:4930f81bbe98 | 787 | * @sa getSn_DIPR() |
Soohwan Kim |
4:4930f81bbe98 | 788 | */ |
Soohwan Kim |
4:4930f81bbe98 | 789 | void setSn_DIPR(uint8_t sn, uint8_t * dipr) { |
Soohwan Kim |
4:4930f81bbe98 | 790 | spi_write(Sn_DIPR, (0x0C + (sn << 5)), dipr, 4); |
Soohwan Kim |
4:4930f81bbe98 | 791 | } |
Soohwan Kim |
4:4930f81bbe98 | 792 | |
Soohwan Kim |
4:4930f81bbe98 | 793 | /** |
Soohwan Kim |
4:4930f81bbe98 | 794 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 795 | * @brief Get @ref Sn_DIPR register |
Soohwan Kim |
4:4930f81bbe98 | 796 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 797 | * @param (uint8_t*)dipr Pointer variable to get socket n destination IP address. It should be allocated 4 bytes. |
Soohwan Kim |
4:4930f81bbe98 | 798 | * @sa SetSn_DIPR() |
Soohwan Kim |
4:4930f81bbe98 | 799 | */ |
Soohwan Kim |
4:4930f81bbe98 | 800 | void getSn_DIPR(uint8_t sn, uint8_t * dipr) { |
Soohwan Kim |
4:4930f81bbe98 | 801 | spi_read(Sn_DIPR, (0x08 + (sn << 5)), dipr, 4); |
Soohwan Kim |
4:4930f81bbe98 | 802 | } |
Soohwan Kim |
4:4930f81bbe98 | 803 | |
Soohwan Kim |
4:4930f81bbe98 | 804 | /** |
Soohwan Kim |
4:4930f81bbe98 | 805 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 806 | * @brief Set @ref Sn_DPORT register |
Soohwan Kim |
4:4930f81bbe98 | 807 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 808 | * @param (uint16_t)dport Value to set @ref Sn_DPORT |
Soohwan Kim |
4:4930f81bbe98 | 809 | * @sa getSn_DPORT() |
Soohwan Kim |
4:4930f81bbe98 | 810 | */ |
Soohwan Kim |
4:4930f81bbe98 | 811 | void setSn_DPORT(uint8_t sn, uint16_t dport) { |
Soohwan Kim |
4:4930f81bbe98 | 812 | sreg<uint16_t>(sn, Sn_DPORT, dport); |
Soohwan Kim |
4:4930f81bbe98 | 813 | } |
Soohwan Kim |
4:4930f81bbe98 | 814 | |
Soohwan Kim |
4:4930f81bbe98 | 815 | /** |
Soohwan Kim |
4:4930f81bbe98 | 816 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 817 | * @brief Get @ref Sn_DPORT register |
Soohwan Kim |
4:4930f81bbe98 | 818 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 819 | * @return uint16_t. Value of @ref Sn_DPORT. |
Soohwan Kim |
4:4930f81bbe98 | 820 | * @sa setSn_DPORT() |
Soohwan Kim |
4:4930f81bbe98 | 821 | */ |
Soohwan Kim |
4:4930f81bbe98 | 822 | uint16_t getSn_DPORT(uint8_t sn) { |
Soohwan Kim |
4:4930f81bbe98 | 823 | return sreg<uint16_t>(sn, Sn_DPORT); |
Soohwan Kim |
4:4930f81bbe98 | 824 | } |
Soohwan Kim |
4:4930f81bbe98 | 825 | |
Soohwan Kim |
4:4930f81bbe98 | 826 | |
Soohwan Kim |
4:4930f81bbe98 | 827 | /** |
Soohwan Kim |
4:4930f81bbe98 | 828 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 829 | * @brief Set @ref Sn_RXBUF_SIZE register |
Soohwan Kim |
4:4930f81bbe98 | 830 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 831 | * @param (uint8_t)rxbufsize Value to set @ref Sn_RXBUF_SIZE |
Soohwan Kim |
4:4930f81bbe98 | 832 | * @sa getSn_RXBUF_SIZE() |
Soohwan Kim |
4:4930f81bbe98 | 833 | */ |
Soohwan Kim |
4:4930f81bbe98 | 834 | void setSn_RXBUF_SIZE(uint8_t sn, uint8_t rxbufsize) { |
Soohwan Kim |
4:4930f81bbe98 | 835 | sreg<uint8_t>(sn, Sn_RXBUF_SIZE ,rxbufsize); |
Soohwan Kim |
4:4930f81bbe98 | 836 | } |
Soohwan Kim |
4:4930f81bbe98 | 837 | |
Soohwan Kim |
4:4930f81bbe98 | 838 | |
Soohwan Kim |
4:4930f81bbe98 | 839 | /** |
Soohwan Kim |
4:4930f81bbe98 | 840 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 841 | * @brief Get @ref Sn_RXBUF_SIZE register |
Soohwan Kim |
4:4930f81bbe98 | 842 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 843 | * @return uint8_t. Value of @ref Sn_RXBUF_SIZE. |
Soohwan Kim |
4:4930f81bbe98 | 844 | * @sa setSn_RXBUF_SIZE() |
Soohwan Kim |
4:4930f81bbe98 | 845 | */ |
Soohwan Kim |
4:4930f81bbe98 | 846 | uint8_t getSn_RXBUF_SIZE(uint8_t sn) { |
Soohwan Kim |
4:4930f81bbe98 | 847 | return sreg<uint8_t>(sn, Sn_RXBUF_SIZE); |
Soohwan Kim |
4:4930f81bbe98 | 848 | } |
Soohwan Kim |
4:4930f81bbe98 | 849 | |
Soohwan Kim |
4:4930f81bbe98 | 850 | /** |
Soohwan Kim |
4:4930f81bbe98 | 851 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 852 | * @brief Set @ref Sn_TXBUF_SIZE register |
Soohwan Kim |
4:4930f81bbe98 | 853 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 854 | * @param (uint8_t)txbufsize Value to set @ref Sn_TXBUF_SIZE |
Soohwan Kim |
4:4930f81bbe98 | 855 | * @sa getSn_TXBUF_SIZE() |
Soohwan Kim |
4:4930f81bbe98 | 856 | */ |
Soohwan Kim |
4:4930f81bbe98 | 857 | void setSn_TXBUF_SIZE(uint8_t sn, uint8_t txbufsize) { |
Soohwan Kim |
4:4930f81bbe98 | 858 | sreg<uint8_t>(sn, Sn_TXBUF_SIZE, txbufsize); |
Soohwan Kim |
4:4930f81bbe98 | 859 | } |
Soohwan Kim |
4:4930f81bbe98 | 860 | |
Soohwan Kim |
4:4930f81bbe98 | 861 | /** |
Soohwan Kim |
4:4930f81bbe98 | 862 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 863 | * @brief Get @ref Sn_TXBUF_SIZE register |
Soohwan Kim |
4:4930f81bbe98 | 864 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 865 | * @return uint8_t. Value of @ref Sn_TXBUF_SIZE. |
Soohwan Kim |
4:4930f81bbe98 | 866 | * @sa setSn_TXBUF_SIZE() |
Soohwan Kim |
4:4930f81bbe98 | 867 | */ |
Soohwan Kim |
4:4930f81bbe98 | 868 | uint8_t getSn_TXBUF_SIZE(uint8_t sn) { |
Soohwan Kim |
4:4930f81bbe98 | 869 | return sreg<uint8_t>(sn, Sn_TXBUF_SIZE); |
Soohwan Kim |
4:4930f81bbe98 | 870 | } |
Soohwan Kim |
4:4930f81bbe98 | 871 | |
Soohwan Kim |
4:4930f81bbe98 | 872 | /** |
Soohwan Kim |
4:4930f81bbe98 | 873 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 874 | * @brief Get @ref Sn_TX_FSR register |
Soohwan Kim |
4:4930f81bbe98 | 875 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 876 | * @return uint16_t. Value of @ref Sn_TX_FSR. |
Soohwan Kim |
4:4930f81bbe98 | 877 | */ |
Soohwan Kim |
4:4930f81bbe98 | 878 | uint16_t getSn_TX_FSR(uint8_t sn) { |
Soohwan Kim |
4:4930f81bbe98 | 879 | return sreg<uint16_t>(sn, Sn_TX_FSR); |
Soohwan Kim |
4:4930f81bbe98 | 880 | } |
Soohwan Kim |
4:4930f81bbe98 | 881 | |
Soohwan Kim |
4:4930f81bbe98 | 882 | |
Soohwan Kim |
4:4930f81bbe98 | 883 | /** |
Soohwan Kim |
4:4930f81bbe98 | 884 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 885 | * @brief Get @ref Sn_TX_RD register |
Soohwan Kim |
4:4930f81bbe98 | 886 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 887 | * @return uint16_t. Value of @ref Sn_TX_RD. |
Soohwan Kim |
4:4930f81bbe98 | 888 | */ |
Soohwan Kim |
4:4930f81bbe98 | 889 | uint16_t getSn_TX_RD(uint8_t sn) { |
Soohwan Kim |
4:4930f81bbe98 | 890 | return sreg<uint16_t>(sn, Sn_TX_RD); |
Soohwan Kim |
4:4930f81bbe98 | 891 | } |
Soohwan Kim |
4:4930f81bbe98 | 892 | |
Soohwan Kim |
4:4930f81bbe98 | 893 | /** |
Soohwan Kim |
4:4930f81bbe98 | 894 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 895 | * @brief Set @ref Sn_TX_WR register |
Soohwan Kim |
4:4930f81bbe98 | 896 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 897 | * @param (uint16_t)txwr Value to set @ref Sn_TX_WR |
Soohwan Kim |
4:4930f81bbe98 | 898 | * @sa GetSn_TX_WR() |
Soohwan Kim |
4:4930f81bbe98 | 899 | */ |
Soohwan Kim |
4:4930f81bbe98 | 900 | void setSn_TX_WR(uint8_t sn, uint16_t txwr) { |
Soohwan Kim |
4:4930f81bbe98 | 901 | sreg<uint16_t>(sn, Sn_TX_WR, txwr); |
Soohwan Kim |
4:4930f81bbe98 | 902 | } |
Soohwan Kim |
4:4930f81bbe98 | 903 | |
Soohwan Kim |
4:4930f81bbe98 | 904 | /** |
Soohwan Kim |
4:4930f81bbe98 | 905 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 906 | * @brief Get @ref Sn_TX_WR register |
Soohwan Kim |
4:4930f81bbe98 | 907 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 908 | * @return uint16_t. Value of @ref Sn_TX_WR. |
Soohwan Kim |
4:4930f81bbe98 | 909 | * @sa setSn_TX_WR() |
Soohwan Kim |
4:4930f81bbe98 | 910 | */ |
Soohwan Kim |
4:4930f81bbe98 | 911 | uint16_t getSn_TX_WR(uint8_t sn) { |
Soohwan Kim |
4:4930f81bbe98 | 912 | return sreg<uint16_t>(sn, Sn_TX_WR); |
Soohwan Kim |
4:4930f81bbe98 | 913 | } |
Soohwan Kim |
4:4930f81bbe98 | 914 | |
Soohwan Kim |
4:4930f81bbe98 | 915 | |
Soohwan Kim |
4:4930f81bbe98 | 916 | /** |
Soohwan Kim |
4:4930f81bbe98 | 917 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 918 | * @brief Get @ref Sn_RX_RSR register |
Soohwan Kim |
4:4930f81bbe98 | 919 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 920 | * @return uint16_t. Value of @ref Sn_RX_RSR. |
Soohwan Kim |
4:4930f81bbe98 | 921 | */ |
Soohwan Kim |
4:4930f81bbe98 | 922 | uint16_t getSn_RX_RSR(uint8_t sn) { |
Soohwan Kim |
4:4930f81bbe98 | 923 | return sreg<uint16_t>(sn, Sn_RX_RSR); |
Soohwan Kim |
4:4930f81bbe98 | 924 | } |
Soohwan Kim |
4:4930f81bbe98 | 925 | |
Soohwan Kim |
4:4930f81bbe98 | 926 | |
Soohwan Kim |
4:4930f81bbe98 | 927 | /** |
Soohwan Kim |
4:4930f81bbe98 | 928 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 929 | * @brief Set @ref Sn_RX_RD register |
Soohwan Kim |
4:4930f81bbe98 | 930 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 931 | * @param (uint16_t)rxrd Value to set @ref Sn_RX_RD |
Soohwan Kim |
4:4930f81bbe98 | 932 | * @sa getSn_RX_RD() |
Soohwan Kim |
4:4930f81bbe98 | 933 | */ |
Soohwan Kim |
4:4930f81bbe98 | 934 | void setSn_RX_RD(uint8_t sn, uint16_t rxrd) { |
Soohwan Kim |
4:4930f81bbe98 | 935 | sreg<uint16_t>(sn, Sn_RX_RD, rxrd); |
Soohwan Kim |
4:4930f81bbe98 | 936 | } |
Soohwan Kim |
4:4930f81bbe98 | 937 | |
Soohwan Kim |
4:4930f81bbe98 | 938 | /** |
Soohwan Kim |
4:4930f81bbe98 | 939 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 940 | * @brief Get @ref Sn_RX_RD register |
Soohwan Kim |
4:4930f81bbe98 | 941 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 942 | * @regurn uint16_t. Value of @ref Sn_RX_RD. |
Soohwan Kim |
4:4930f81bbe98 | 943 | * @sa setSn_RX_RD() |
Soohwan Kim |
4:4930f81bbe98 | 944 | */ |
Soohwan Kim |
4:4930f81bbe98 | 945 | uint16_t getSn_RX_RD(uint8_t sn) { |
Soohwan Kim |
4:4930f81bbe98 | 946 | return sreg<uint16_t>(sn, Sn_RX_RD); |
Soohwan Kim |
4:4930f81bbe98 | 947 | } |
Soohwan Kim |
4:4930f81bbe98 | 948 | |
Soohwan Kim |
4:4930f81bbe98 | 949 | /** |
Soohwan Kim |
4:4930f81bbe98 | 950 | * @ingroup Socket_register_access_function |
Soohwan Kim |
4:4930f81bbe98 | 951 | * @brief Get @ref Sn_RX_WR register |
Soohwan Kim |
4:4930f81bbe98 | 952 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 953 | * @return uint16_t. Value of @ref Sn_RX_WR. |
Soohwan Kim |
4:4930f81bbe98 | 954 | */ |
Soohwan Kim |
4:4930f81bbe98 | 955 | uint16_t getSn_RX_WR(uint8_t sn) { |
Soohwan Kim |
4:4930f81bbe98 | 956 | return sreg<uint16_t>(sn, Sn_RX_WR); |
Soohwan Kim |
4:4930f81bbe98 | 957 | } |
Soohwan Kim |
4:4930f81bbe98 | 958 | |
Soohwan Kim |
4:4930f81bbe98 | 959 | |
Soohwan Kim |
4:4930f81bbe98 | 960 | ////////////////////////////////////// |
Soohwan Kim |
4:4930f81bbe98 | 961 | |
Soohwan Kim |
4:4930f81bbe98 | 962 | ///////////////////////////////////// |
Soohwan Kim |
4:4930f81bbe98 | 963 | // Sn_TXBUF & Sn_RXBUF IO function // |
Soohwan Kim |
4:4930f81bbe98 | 964 | ///////////////////////////////////// |
Soohwan Kim |
4:4930f81bbe98 | 965 | /** |
Soohwan Kim |
4:4930f81bbe98 | 966 | * @brief Gets the max buffer size of socket sn passed as parameter. |
Soohwan Kim |
4:4930f81bbe98 | 967 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 968 | * @return uint16_t. Value of Socket n RX max buffer size. |
Soohwan Kim |
4:4930f81bbe98 | 969 | */ |
Soohwan Kim |
4:4930f81bbe98 | 970 | uint16_t getSn_RxMAX(uint8_t sn) { |
Soohwan Kim |
4:4930f81bbe98 | 971 | return (getSn_RXBUF_SIZE(sn) << 10); |
Soohwan Kim |
4:4930f81bbe98 | 972 | } |
Soohwan Kim |
4:4930f81bbe98 | 973 | |
Soohwan Kim |
4:4930f81bbe98 | 974 | /** |
Soohwan Kim |
4:4930f81bbe98 | 975 | * @brief Gets the max buffer size of socket sn passed as parameters. |
Soohwan Kim |
4:4930f81bbe98 | 976 | * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. |
Soohwan Kim |
4:4930f81bbe98 | 977 | * @return uint16_t. Value of Socket n TX max buffer size. |
Soohwan Kim |
4:4930f81bbe98 | 978 | */ |
Soohwan Kim |
4:4930f81bbe98 | 979 | //uint16_t getSn_TxMAX(uint8_t sn); |
Soohwan Kim |
4:4930f81bbe98 | 980 | uint16_t getSn_TxMAX(uint8_t sn) { |
Soohwan Kim |
4:4930f81bbe98 | 981 | return (getSn_TXBUF_SIZE(sn) << 10); |
Soohwan Kim |
4:4930f81bbe98 | 982 | } |
Soohwan Kim |
4:4930f81bbe98 | 983 | |
Soohwan Kim |
0:6f28332c466f | 984 | |
embeddist | 14:2101ab5ee40f | 985 | int ethernet_link(void); |
embeddist | 14:2101ab5ee40f | 986 | void ethernet_set_link(int speed, int duplex); |
Soohwan Kim |
0:6f28332c466f | 987 | protected: |
Soohwan Kim |
0:6f28332c466f | 988 | uint8_t mac[6]; |
Soohwan Kim |
0:6f28332c466f | 989 | uint32_t ip; |
Soohwan Kim |
0:6f28332c466f | 990 | uint32_t netmask; |
Soohwan Kim |
0:6f28332c466f | 991 | uint32_t gateway; |
Soohwan Kim |
0:6f28332c466f | 992 | uint32_t dnsaddr; |
Soohwan Kim |
0:6f28332c466f | 993 | bool dhcp; |
Soohwan Kim |
4:4930f81bbe98 | 994 | |
embeddist | 14:2101ab5ee40f | 995 | void spi_write(uint16_t addr, uint8_t cb, const uint8_t *buf, uint16_t len); |
embeddist | 14:2101ab5ee40f | 996 | void spi_read(uint16_t addr, uint8_t cb, uint8_t *buf, uint16_t len); |
embeddist | 14:2101ab5ee40f | 997 | SPI* spi; |
embeddist | 14:2101ab5ee40f | 998 | DigitalOut cs; |
embeddist | 14:2101ab5ee40f | 999 | DigitalOut reset_pin; |
Soohwan Kim |
0:6f28332c466f | 1000 | static WIZnet_Chip* inst; |
Soohwan Kim |
0:6f28332c466f | 1001 | |
Soohwan Kim |
0:6f28332c466f | 1002 | void reg_wr_mac(uint16_t addr, uint8_t* data) { |
Soohwan Kim |
0:6f28332c466f | 1003 | spi_write(addr, 0x04, data, 6); |
Soohwan Kim |
0:6f28332c466f | 1004 | } |
Soohwan Kim |
0:6f28332c466f | 1005 | |
Soohwan Kim |
0:6f28332c466f | 1006 | }; |
embeddist | 14:2101ab5ee40f | 1007 | |
Soohwan Kim |
0:6f28332c466f | 1008 | |
Soohwan Kim |
0:6f28332c466f | 1009 | extern uint32_t str_to_ip(const char* str); |
Soohwan Kim |
0:6f28332c466f | 1010 | extern void printfBytes(char* str, uint8_t* buf, int len); |
Soohwan Kim |
0:6f28332c466f | 1011 | extern void printHex(uint8_t* buf, int len); |
Soohwan Kim |
0:6f28332c466f | 1012 | extern void debug_hex(uint8_t* buf, int len); |