Skip to content

Commit 30aa274

Browse files
authored
Merge pull request #119 from BiffoBear/add_w6100
Added WizNet w6100 IPv4 Support
2 parents 0fa1ca9 + 884da9d commit 30aa274

9 files changed

+738
-2034
lines changed

adafruit_wiznet5k/adafruit_wiznet5k.py

Lines changed: 720 additions & 716 deletions
Large diffs are not rendered by default.

adafruit_wiznet5k/adafruit_wiznet5k_dhcp.py

Lines changed: 13 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -245,11 +245,7 @@ def _dhcp_connection_setup(self, timeout: float = 5.0) -> None:
245245
self._eth.write_snmr(self._wiz_sock, 0x02) # Set UDP connection
246246
self._eth.write_sock_port(self._wiz_sock, 68) # Set DHCP client port.
247247
self._eth.write_sncr(self._wiz_sock, 0x01) # Open the socket.
248-
while (
249-
self._eth.read_sncr(self._wiz_sock) != b"\x00"
250-
): # Wait for command to complete.
251-
time.sleep(0.001)
252-
if self._eth.read_snsr(self._wiz_sock) == b"\x22":
248+
if self._eth.read_snsr(self._wiz_sock) == 0x22:
253249
self._eth.write_sndport(2, _DHCP_SERVER_PORT)
254250
debug_msg("+ Connection OK, port set.", self._debug)
255251
return
@@ -299,30 +295,18 @@ def _receive_dhcp_response(self, timeout: float) -> int:
299295
:returns int: The number of bytes stored in the global buffer.
300296
"""
301297
debug_msg("Receiving a DHCP response.", self._debug)
302-
# DHCP returns the query plus additional data. The query length is 236 bytes.
303-
minimum_packet_length = 236
304-
buffer = bytearray(b"")
305-
bytes_read = 0
306-
debug_msg("+ Beginning to receive…", self._debug)
307-
while bytes_read < minimum_packet_length and time.monotonic() < timeout:
308-
if self._eth.socket_available(self._wiz_sock, _SNMR_UDP):
309-
x = self._eth.read_udp(self._wiz_sock, _BUFF_LENGTH - bytes_read)[1]
310-
buffer.extend(x)
311-
bytes_read = len(buffer)
312-
debug_msg("+ Bytes read so far {}".format(bytes_read), self._debug)
313-
debug_msg(x, self._debug)
314-
if bytes_read == _BUFF_LENGTH:
315-
break
316-
debug_msg("Received {} bytes".format(bytes_read), self._debug)
317-
if bytes_read < minimum_packet_length:
318-
bytes_read = 0
319-
else:
320-
_BUFF[:bytes_read] = buffer
321-
_BUFF[bytes_read:] = bytearray(_BUFF_LENGTH - bytes_read)
322-
del buffer
323-
gc.collect()
324-
debug_msg(_BUFF[:bytes_read], self._debug)
325-
return bytes_read
298+
while time.monotonic() < timeout:
299+
# DHCP returns the query plus additional data. The query length is 236 bytes.
300+
if self._eth.socket_available(self._wiz_sock, _SNMR_UDP) > 236:
301+
bytes_count, bytes_read = self._eth.read_udp(
302+
self._wiz_sock, _BUFF_LENGTH
303+
)
304+
_BUFF[:bytes_count] = bytes_read
305+
debug_msg("Received {} bytes".format(bytes_count), self._debug)
306+
del bytes_read
307+
gc.collect()
308+
return bytes_count
309+
raise TimeoutError("No DHCP response received.")
326310

327311
def _process_messaging_states(self, *, message_type: int):
328312
"""

adafruit_wiznet5k/adafruit_wiznet5k_dns.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ def gethostbyname(self, hostname: bytes) -> Union[int, bytes]:
261261
ipaddress = -1
262262
for _ in range(5):
263263
# wait for a response
264-
socket_timeout = time.monotonic() + 1.0
264+
socket_timeout = time.monotonic() + 5.0
265265
while not self._iface.socket_available(dns_socket, 0x02):
266266
if time.monotonic() > socket_timeout:
267267
_debug_print(

adafruit_wiznet5k/adafruit_wiznet5k_socket.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -254,14 +254,14 @@ def __exit__(self, exc_type, exc_val, exc_tb) -> None:
254254
wiznet5k.adafruit_wiznet5k.SNIR_TIMEOUT
255255
| wiznet5k.adafruit_wiznet5k.SNIR_DISCON
256256
)
257-
while not _the_interface.read_snir(self._socknum)[0] & mask:
257+
while not _the_interface.read_snir(self._socknum) & mask:
258258
pass
259259
_the_interface.write_snir(
260260
self._socknum, 0xFF
261261
) # Reset socket interrupt register.
262262
_the_interface.socket_close(self._socknum)
263263
while (
264-
_the_interface.socket_status(self._socknum)[0]
264+
_the_interface.socket_status(self._socknum)
265265
!= wiznet5k.adafruit_wiznet5k.SNSR_SOCK_CLOSED
266266
):
267267
pass
@@ -284,7 +284,7 @@ def _status(self) -> int:
284284
285285
:return int: Status of the socket.
286286
"""
287-
return _the_interface.socket_status(self._socknum)[0]
287+
return _the_interface.socket_status(self._socknum)
288288

289289
@property
290290
def _connected(self) -> bool:
@@ -297,7 +297,7 @@ def _connected(self) -> bool:
297297

298298
if self._socknum >= _the_interface.max_sockets:
299299
return False
300-
status = _the_interface.socket_status(self._socknum)[0]
300+
status = _the_interface.socket_status(self._socknum)
301301
if (
302302
status == wiznet5k.adafruit_wiznet5k.SNSR_SOCK_CLOSE_WAIT
303303
and self._available() == 0

tests/dhcp_dummy_data.py

Lines changed: 0 additions & 124 deletions
This file was deleted.

tests/extract_unique_dns_responses.py

Lines changed: 0 additions & 91 deletions
This file was deleted.

0 commit comments

Comments
 (0)