w5100_driver.h
Go to the documentation of this file.
1 /**
2  * @file w5100_driver.h
3  * @brief WIZnet W5100 Ethernet controller
4  *
5  * @section License
6  *
7  * SPDX-License-Identifier: GPL-2.0-or-later
8  *
9  * Copyright (C) 2010-2024 Oryx Embedded SARL. All rights reserved.
10  *
11  * This file is part of CycloneTCP Open.
12  *
13  * This program is free software; you can redistribute it and/or
14  * modify it under the terms of the GNU General Public License
15  * as published by the Free Software Foundation; either version 2
16  * of the License, or (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this program; if not, write to the Free Software Foundation,
25  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
26  *
27  * @author Oryx Embedded SARL (www.oryx-embedded.com)
28  * @version 2.4.4
29  **/
30 
31 #ifndef _W5100_DRIVER_H
32 #define _W5100_DRIVER_H
33 
34 //Dependencies
35 #include "core/nic.h"
36 
37 //TX buffer size
38 #ifndef W5100_ETH_TX_BUFFER_SIZE
39  #define W5100_ETH_TX_BUFFER_SIZE 1536
40 #elif (W5100_ETH_TX_BUFFER_SIZE != 1536)
41  #error W5100_ETH_TX_BUFFER_SIZE parameter is not valid
42 #endif
43 
44 //RX buffer size
45 #ifndef W5100_ETH_RX_BUFFER_SIZE
46  #define W5100_ETH_RX_BUFFER_SIZE 1536
47 #elif (W5100_ETH_RX_BUFFER_SIZE != 1536)
48  #error W5100_ETH_RX_BUFFER_SIZE parameter is not valid
49 #endif
50 
51 //Control byte
52 #define W5100_CTRL_READ 0x0F
53 #define W5100_CTRL_WRITE 0xF0
54 
55 //W5100 Common registers
56 #define W5100_MR 0x00
57 #define W5100_GAR0 0x01
58 #define W5100_GAR1 0x02
59 #define W5100_GAR2 0x03
60 #define W5100_GAR3 0x04
61 #define W5100_SUBR0 0x05
62 #define W5100_SUBR1 0x06
63 #define W5100_SUBR2 0x07
64 #define W5100_SUBR3 0x08
65 #define W5100_SHAR0 0x09
66 #define W5100_SHAR1 0x0A
67 #define W5100_SHAR2 0x0B
68 #define W5100_SHAR3 0x0C
69 #define W5100_SHAR4 0x0D
70 #define W5100_SHAR5 0x0E
71 #define W5100_SIPR0 0x0F
72 #define W5100_SIPR1 0x10
73 #define W5100_SIPR2 0x11
74 #define W5100_SIPR3 0x12
75 #define W5100_IR 0x15
76 #define W5100_IMR 0x16
77 #define W5100_RTR0 0x17
78 #define W5100_RTR1 0x18
79 #define W5100_RCR 0x19
80 #define W5100_RMSR 0x1A
81 #define W5100_TMSR 0x1B
82 #define W5100_PATR0 0x1C
83 #define W5100_PATR1 0x1D
84 #define W5100_PTIMER 0x28
85 #define W5100_PMAGIC 0x29
86 #define W5100_UIPR0 0x2A
87 #define W5100_UIPR1 0x2B
88 #define W5100_UIPR2 0x2C
89 #define W5100_UIPR3 0x2D
90 #define W5100_UPORT0 0x2E
91 #define W5100_UPORT1 0x2F
92 
93 //W5100 Socket registers
94 #define W5100_S0_MR 0x0400
95 #define W5100_S0_CR 0x0401
96 #define W5100_S0_IR 0x0402
97 #define W5100_S0_SR 0x0403
98 #define W5100_S0_PORT0 0x0404
99 #define W5100_S0_PORT1 0x0405
100 #define W5100_S0_DHAR0 0x0406
101 #define W5100_S0_DHAR1 0x0407
102 #define W5100_S0_DHAR2 0x0408
103 #define W5100_S0_DHAR3 0x0409
104 #define W5100_S0_DHAR4 0x040A
105 #define W5100_S0_DHAR5 0x040B
106 #define W5100_S0_DIPR0 0x040C
107 #define W5100_S0_DIPR1 0x040D
108 #define W5100_S0_DIPR2 0x040E
109 #define W5100_S0_DIPR3 0x040F
110 #define W5100_S0_DPORT0 0x0410
111 #define W5100_S0_DPORT1 0x0411
112 #define W5100_S0_MSSR0 0x0412
113 #define W5100_S0_MSSR1 0x0413
114 #define W5100_S0_PROTO 0x0414
115 #define W5100_S0_TOS 0x0415
116 #define W5100_S0_TTL 0x0416
117 #define W5100_S0_TX_FSR0 0x0420
118 #define W5100_S0_TX_FSR1 0x0421
119 #define W5100_S0_TX_RD0 0x0422
120 #define W5100_S0_TX_RD1 0x0423
121 #define W5100_S0_TX_WR0 0x0424
122 #define W5100_S0_TX_WR1 0x0425
123 #define W5100_S0_RX_RSR0 0x0426
124 #define W5100_S0_RX_RSR1 0x0427
125 #define W5100_S0_RX_RD0 0x0428
126 #define W5100_S0_RX_RD1 0x0429
127 #define W5100_S1_MR 0x0500
128 #define W5100_S1_CR 0x0501
129 #define W5100_S1_IR 0x0502
130 #define W5100_S1_SR 0x0503
131 #define W5100_S1_PORT0 0x0504
132 #define W5100_S1_PORT1 0x0505
133 #define W5100_S1_DHAR0 0x0506
134 #define W5100_S1_DHAR1 0x0507
135 #define W5100_S1_DHAR2 0x0508
136 #define W5100_S1_DHAR3 0x0509
137 #define W5100_S1_DHAR4 0x050A
138 #define W5100_S1_DHAR5 0x050B
139 #define W5100_S1_DIPR0 0x050C
140 #define W5100_S1_DIPR1 0x050D
141 #define W5100_S1_DIPR2 0x050E
142 #define W5100_S1_DIPR3 0x050F
143 #define W5100_S1_DPORT0 0x0510
144 #define W5100_S1_DPORT1 0x0511
145 #define W5100_S1_MSSR0 0x0512
146 #define W5100_S1_MSSR1 0x0513
147 #define W5100_S1_PROTO 0x0514
148 #define W5100_S1_TOS 0x0515
149 #define W5100_S1_TTL 0x0516
150 #define W5100_S1_TX_FSR0 0x0520
151 #define W5100_S1_TX_FSR1 0x0521
152 #define W5100_S1_TX_RD0 0x0522
153 #define W5100_S1_TX_RD1 0x0523
154 #define W5100_S1_TX_WR0 0x0524
155 #define W5100_S1_TX_WR1 0x0525
156 #define W5100_S1_RX_RSR0 0x0526
157 #define W5100_S1_RX_RSR1 0x0527
158 #define W5100_S1_RX_RD0 0x0528
159 #define W5100_S1_RX_RD1 0x0529
160 #define W5100_S2_MR 0x0600
161 #define W5100_S2_CR 0x0601
162 #define W5100_S2_IR 0x0602
163 #define W5100_S2_SR 0x0603
164 #define W5100_S2_PORT0 0x0604
165 #define W5100_S2_PORT1 0x0605
166 #define W5100_S2_DHAR0 0x0606
167 #define W5100_S2_DHAR1 0x0607
168 #define W5100_S2_DHAR2 0x0608
169 #define W5100_S2_DHAR3 0x0609
170 #define W5100_S2_DHAR4 0x060A
171 #define W5100_S2_DHAR5 0x060B
172 #define W5100_S2_DIPR0 0x060C
173 #define W5100_S2_DIPR1 0x060D
174 #define W5100_S2_DIPR2 0x060E
175 #define W5100_S2_DIPR3 0x060F
176 #define W5100_S2_DPORT0 0x0610
177 #define W5100_S2_DPORT1 0x0611
178 #define W5100_S2_MSSR0 0x0612
179 #define W5100_S2_MSSR1 0x0613
180 #define W5100_S2_PROTO 0x0614
181 #define W5100_S2_TOS 0x0615
182 #define W5100_S2_TTL 0x0616
183 #define W5100_S2_TX_FSR0 0x0620
184 #define W5100_S2_TX_FSR1 0x0621
185 #define W5100_S2_TX_RD0 0x0622
186 #define W5100_S2_TX_RD1 0x0623
187 #define W5100_S2_TX_WR0 0x0624
188 #define W5100_S2_TX_WR1 0x0625
189 #define W5100_S2_RX_RSR0 0x0626
190 #define W5100_S2_RX_RSR1 0x0627
191 #define W5100_S2_RX_RD0 0x0628
192 #define W5100_S2_RX_RD1 0x0629
193 #define W5100_S3_MR 0x0700
194 #define W5100_S3_CR 0x0701
195 #define W5100_S3_IR 0x0702
196 #define W5100_S3_SR 0x0703
197 #define W5100_S3_PORT0 0x0704
198 #define W5100_S3_PORT1 0x0705
199 #define W5100_S3_DHAR0 0x0706
200 #define W5100_S3_DHAR1 0x0707
201 #define W5100_S3_DHAR2 0x0708
202 #define W5100_S3_DHAR3 0x0709
203 #define W5100_S3_DHAR4 0x070A
204 #define W5100_S3_DHAR5 0x070B
205 #define W5100_S3_DIPR0 0x070C
206 #define W5100_S3_DIPR1 0x070D
207 #define W5100_S3_DIPR2 0x070E
208 #define W5100_S3_DIPR3 0x070F
209 #define W5100_S3_DPORT0 0x0710
210 #define W5100_S3_DPORT1 0x0711
211 #define W5100_S3_MSSR0 0x0712
212 #define W5100_S3_MSSR1 0x0713
213 #define W5100_S3_PROTO 0x0714
214 #define W5100_S3_TOS 0x0715
215 #define W5100_S3_TTL 0x0716
216 #define W5100_S3_TX_FSR0 0x0720
217 #define W5100_S3_TX_FSR1 0x0721
218 #define W5100_S3_TX_RD0 0x0722
219 #define W5100_S3_TX_RD1 0x0723
220 #define W5100_S3_TX_WR0 0x0724
221 #define W5100_S3_TX_WR1 0x0725
222 #define W5100_S3_RX_RSR0 0x0726
223 #define W5100_S3_RX_RSR1 0x0727
224 #define W5100_S3_RX_RD0 0x0728
225 #define W5100_S3_RX_RD1 0x0729
226 
227 //W5100 Socket register access macros
228 #define W5100_Sn_MR(n) (0x0400 + ((n) * 0x0100))
229 #define W5100_Sn_CR(n) (0x0401 + ((n) * 0x0100))
230 #define W5100_Sn_IR(n) (0x0402 + ((n) * 0x0100))
231 #define W5100_Sn_SR(n) (0x0403 + ((n) * 0x0100))
232 #define W5100_Sn_PORT0(n) (0x0404 + ((n) * 0x0100))
233 #define W5100_Sn_PORT1(n) (0x0405 + ((n) * 0x0100))
234 #define W5100_Sn_DHAR0(n) (0x0406 + ((n) * 0x0100))
235 #define W5100_Sn_DHAR1(n) (0x0407 + ((n) * 0x0100))
236 #define W5100_Sn_DHAR2(n) (0x0408 + ((n) * 0x0100))
237 #define W5100_Sn_DHAR3(n) (0x0409 + ((n) * 0x0100))
238 #define W5100_Sn_DHAR4(n) (0x040A + ((n) * 0x0100))
239 #define W5100_Sn_DHAR5(n) (0x040B + ((n) * 0x0100))
240 #define W5100_Sn_DIPR0(n) (0x040C + ((n) * 0x0100))
241 #define W5100_Sn_DIPR1(n) (0x040D + ((n) * 0x0100))
242 #define W5100_Sn_DIPR2(n) (0x040E + ((n) * 0x0100))
243 #define W5100_Sn_DIPR3(n) (0x040F + ((n) * 0x0100))
244 #define W5100_Sn_DPORT0(n) (0x0410 + ((n) * 0x0100))
245 #define W5100_Sn_DPORT1(n) (0x0411 + ((n) * 0x0100))
246 #define W5100_Sn_MSSR0(n) (0x0412 + ((n) * 0x0100))
247 #define W5100_Sn_MSSR1(n) (0x0413 + ((n) * 0x0100))
248 #define W5100_Sn_PROTO(n) (0x0414 + ((n) * 0x0100))
249 #define W5100_Sn_TOS(n) (0x0415 + ((n) * 0x0100))
250 #define W5100_Sn_TTL(n) (0x0416 + ((n) * 0x0100))
251 #define W5100_Sn_TX_FSR0(n) (0x0420 + ((n) * 0x0100))
252 #define W5100_Sn_TX_FSR1(n) (0x0421 + ((n) * 0x0100))
253 #define W5100_Sn_TX_RD0(n) (0x0422 + ((n) * 0x0100))
254 #define W5100_Sn_TX_RD1(n) (0x0423 + ((n) * 0x0100))
255 #define W5100_Sn_TX_WR0(n) (0x0424 + ((n) * 0x0100))
256 #define W5100_Sn_TX_WR1(n) (0x0425 + ((n) * 0x0100))
257 #define W5100_Sn_RX_RSR0(n) (0x0426 + ((n) * 0x0100))
258 #define W5100_Sn_RX_RSR1(n) (0x0427 + ((n) * 0x0100))
259 #define W5100_Sn_RX_RD0(n) (0x0428 + ((n) * 0x0100))
260 #define W5100_Sn_RX_RD1(n) (0x0429 + ((n) * 0x0100))
261 
262 //TX and RX buffers
263 #define W5100_TX_BUFFER 0x4000
264 #define W5100_RX_BUFFER 0x6000
265 
266 //Mode register
267 #define W5100_MR_RST 0x80
268 #define W5100_MR_PB 0x10
269 #define W5100_MR_PPPOE 0x08
270 #define W5100_MR_AI 0x02
271 #define W5100_MR_IND 0x01
272 
273 //Interrupt register
274 #define W5100_IR_CONFLICT 0x80
275 #define W5100_IR_UNREACH 0x40
276 #define W5100_IR_PPPOE 0x20
277 #define W5100_IR_S3_INT 0x08
278 #define W5100_IR_S2_INT 0x04
279 #define W5100_IR_S1_INT 0x02
280 #define W5100_IR_S0_INT 0x01
281 
282 //Interrupt Mask register
283 #define W5100_IMR_IM_IR7 0x80
284 #define W5100_IMR_IM_IR6 0x40
285 #define W5100_IMR_IM_IR5 0x20
286 #define W5100_IMR_IM_IR3 0x08
287 #define W5100_IMR_IM_IR2 0x04
288 #define W5100_IMR_IM_IR1 0x02
289 #define W5100_IMR_IM_IR0 0x01
290 
291 //RX Memory Size register
292 #define W5100_RMSR_SOCKET3 0xC0
293 #define W5100_RMSR_SOCKET3_1KB 0x00
294 #define W5100_RMSR_SOCKET3_2KB 0x40
295 #define W5100_RMSR_SOCKET3_4KB 0x80
296 #define W5100_RMSR_SOCKET3_8KB 0xC0
297 #define W5100_RMSR_SOCKET2 0x30
298 #define W5100_RMSR_SOCKET2_1KB 0x00
299 #define W5100_RMSR_SOCKET2_2KB 0x10
300 #define W5100_RMSR_SOCKET2_4KB 0x20
301 #define W5100_RMSR_SOCKET2_8KB 0x30
302 #define W5100_RMSR_SOCKET1 0x0C
303 #define W5100_RMSR_SOCKET1_1KB 0x00
304 #define W5100_RMSR_SOCKET1_2KB 0x04
305 #define W5100_RMSR_SOCKET1_4KB 0x08
306 #define W5100_RMSR_SOCKET1_8KB 0x0C
307 #define W5100_RMSR_SOCKET0 0x03
308 #define W5100_RMSR_SOCKET0_1KB 0x00
309 #define W5100_RMSR_SOCKET0_2KB 0x01
310 #define W5100_RMSR_SOCKET0_4KB 0x02
311 #define W5100_RMSR_SOCKET0_8KB 0x03
312 
313 //TX Memory Size register
314 #define W5100_TMSR_SOCKET3 0xC0
315 #define W5100_TMSR_SOCKET3_1KB 0x00
316 #define W5100_TMSR_SOCKET3_2KB 0x40
317 #define W5100_TMSR_SOCKET3_4KB 0x80
318 #define W5100_TMSR_SOCKET3_8KB 0xC0
319 #define W5100_TMSR_SOCKET2 0x30
320 #define W5100_TMSR_SOCKET2_1KB 0x00
321 #define W5100_TMSR_SOCKET2_2KB 0x10
322 #define W5100_TMSR_SOCKET2_4KB 0x20
323 #define W5100_TMSR_SOCKET2_8KB 0x30
324 #define W5100_TMSR_SOCKET1 0x0C
325 #define W5100_TMSR_SOCKET1_1KB 0x00
326 #define W5100_TMSR_SOCKET1_2KB 0x04
327 #define W5100_TMSR_SOCKET1_4KB 0x08
328 #define W5100_TMSR_SOCKET1_8KB 0x0C
329 #define W5100_TMSR_SOCKET0 0x03
330 #define W5100_TMSR_SOCKET0_1KB 0x00
331 #define W5100_TMSR_SOCKET0_2KB 0x01
332 #define W5100_TMSR_SOCKET0_4KB 0x02
333 #define W5100_TMSR_SOCKET0_8KB 0x03
334 
335 //Socket n Mode register
336 #define W5100_Sn_MR_MULTI 0x80
337 #define W5100_Sn_MR_ND 0x20
338 #define W5100_Sn_MR_MC 0x20
339 #define W5100_Sn_MR_PROTOCOL 0x0F
340 #define W5100_Sn_MR_PROTOCOL_CLOSED 0x00
341 #define W5100_Sn_MR_PROTOCOL_TCP 0x01
342 #define W5100_Sn_MR_PROTOCOL_UDP 0x02
343 #define W5100_Sn_MR_PROTOCOL_IPRAW 0x03
344 #define W5100_Sn_MR_PROTOCOL_MACRAW 0x04
345 #define W5100_Sn_MR_PROTOCOL_PPPOE 0x05
346 
347 //Socket n Command register
348 #define W5100_Sn_CR_OPEN 0x01
349 #define W5100_Sn_CR_LISTEN 0x02
350 #define W5100_Sn_CR_CONNECT 0x04
351 #define W5100_Sn_CR_DISCON 0x08
352 #define W5100_Sn_CR_CLOSE 0x10
353 #define W5100_Sn_CR_SEND 0x20
354 #define W5100_Sn_CR_SEND_MAC 0x21
355 #define W5100_Sn_CR_SEND_KEEP 0x22
356 #define W5100_Sn_CR_RECV 0x40
357 
358 //Socket n Interrupt register
359 #define W5100_Sn_IR_SEND_OK 0x10
360 #define W5100_Sn_IR_TIMEOUT 0x08
361 #define W5100_Sn_IR_RECV 0x04
362 #define W5100_Sn_IR_DISCON 0x02
363 #define W5100_Sn_IR_CON 0x01
364 
365 //Socket n Status register
366 #define W5100_Sn_SR_SOCK_CLOSED 0x00
367 #define W5100_Sn_SR_SOCK_ARP_1 0x11
368 #define W5100_Sn_SR_SOCK_INIT 0x13
369 #define W5100_Sn_SR_SOCK_LISTEN 0x14
370 #define W5100_Sn_SR_SOCK_SYNSENT 0x15
371 #define W5100_Sn_SR_SOCK_SYNRECV 0x16
372 #define W5100_Sn_SR_SOCK_ESTABLISHED 0x17
373 #define W5100_Sn_SR_SOCK_FIN_WAIT 0x18
374 #define W5100_Sn_SR_SOCK_CLOSING 0x1A
375 #define W5100_Sn_SR_SOCK_TIME_WAIT 0x1B
376 #define W5100_Sn_SR_SOCK_CLOSE_WAIT 0x1C
377 #define W5100_Sn_SR_SOCK_LAST_ACK 0x1D
378 #define W5100_Sn_SR_SOCK_ARP_2 0x21
379 #define W5100_Sn_SR_SOCK_UDP 0x22
380 #define W5100_Sn_SR_SOCK_ARP_3 0x31
381 #define W5100_Sn_SR_SOCK_IPRAW 0x32
382 #define W5100_Sn_SR_SOCK_MACRAW 0x42
383 #define W5100_Sn_SR_SOCK_PPPOE 0x5F
384 
385 //C++ guard
386 #ifdef __cplusplus
387 extern "C" {
388 #endif
389 
390 //W5100 driver
391 extern const NicDriver w5100Driver;
392 
393 //W5100 related functions
394 error_t w5100Init(NetInterface *interface);
395 void w5100InitHook(NetInterface *interface);
396 
397 void w5100Tick(NetInterface *interface);
398 
399 void w5100EnableIrq(NetInterface *interface);
400 void w5100DisableIrq(NetInterface *interface);
402 void w5100EventHandler(NetInterface *interface);
403 
405  const NetBuffer *buffer, size_t offset, NetTxAncillary *ancillary);
406 
408 
410 
411 void w5100WriteReg8(NetInterface *interface, uint16_t address, uint8_t data);
412 uint8_t w5100ReadReg8(NetInterface *interface, uint16_t address);
413 
414 void w5100WriteReg16(NetInterface *interface, uint16_t address, uint16_t data);
415 uint16_t w5100ReadReg16(NetInterface *interface, uint16_t address);
416 
417 void w5100WriteData(NetInterface *interface, const uint8_t *data,
418  size_t length);
419 
420 void w5100ReadData(NetInterface *interface, uint8_t *data, size_t length);
421 
422 void w5100WriteBuffer(NetInterface *interface, uint16_t offset,
423  const uint8_t *data, size_t length);
424 
425 void w5100ReadBuffer(NetInterface *interface, uint16_t address, uint8_t *data,
426  size_t length);
427 
428 void w5100DumpReg(NetInterface *interface);
429 
430 //C++ guard
431 #ifdef __cplusplus
432 }
433 #endif
434 
435 #endif
void w5100WriteReg16(NetInterface *interface, uint16_t address, uint16_t data)
Write 16-bit register.
Definition: w5100_driver.c:491
int bool_t
Definition: compiler_port.h:53
Structure describing a buffer that spans multiple chunks.
Definition: net_mem.h:89
uint8_t data[]
Definition: ethernet.h:222
error_t w5100SendPacket(NetInterface *interface, const NetBuffer *buffer, size_t offset, NetTxAncillary *ancillary)
Send a packet.
Definition: w5100_driver.c:304
error_t w5100Init(NetInterface *interface)
W5100 controller initialization.
Definition: w5100_driver.c:71
void w5100ReadData(NetInterface *interface, uint8_t *data, size_t length)
Read data.
Definition: w5100_driver.c:607
void w5100InitHook(NetInterface *interface)
W5100 custom configuration.
Definition: w5100_driver.c:159
error_t
Error codes.
Definition: error.h:43
bool_t w5100IrqHandler(NetInterface *interface)
W5100 interrupt service routine.
Definition: w5100_driver.c:218
#define NetInterface
Definition: net.h:36
error_t w5100ReceivePacket(NetInterface *interface)
Receive a packet.
Definition: w5100_driver.c:357
void w5100EnableIrq(NetInterface *interface)
Enable interrupts.
Definition: w5100_driver.c:187
void w5100EventHandler(NetInterface *interface)
W5100 event handler.
Definition: w5100_driver.c:279
void w5100WriteReg8(NetInterface *interface, uint16_t address, uint8_t data)
Write 8-bit register.
Definition: w5100_driver.c:432
#define NetTxAncillary
Definition: net_misc.h:36
uint8_t length
Definition: tcp.h:368
void w5100WriteBuffer(NetInterface *interface, uint16_t offset, const uint8_t *data, size_t length)
Write TX buffer.
Definition: w5100_driver.c:673
const NicDriver w5100Driver
W5100 driver.
Definition: w5100_driver.c:44
Ipv6Addr address[]
Definition: ipv6.h:325
Network interface controller abstraction layer.
void w5100DumpReg(NetInterface *interface)
Dump registers for debugging purpose.
Definition: w5100_driver.c:716
uint16_t w5100ReadReg16(NetInterface *interface, uint16_t address)
Read 16-bit register.
Definition: w5100_driver.c:507
void w5100ReadBuffer(NetInterface *interface, uint16_t address, uint8_t *data, size_t length)
Read RX buffer.
Definition: w5100_driver.c:696
NIC driver.
Definition: nic.h:286
void w5100WriteData(NetInterface *interface, const uint8_t *data, size_t length)
Write data.
Definition: w5100_driver.c:541
void w5100DisableIrq(NetInterface *interface)
Disable interrupts.
Definition: w5100_driver.c:202
uint8_t w5100ReadReg8(NetInterface *interface, uint16_t address)
Read 8-bit register.
Definition: w5100_driver.c:459
error_t w5100UpdateMacAddrFilter(NetInterface *interface)
Configure MAC address filtering.
Definition: w5100_driver.c:418
void w5100Tick(NetInterface *interface)
W5100 timer handler.
Definition: w5100_driver.c:169