Skip to content

Commit e3566c8

Browse files
author
brentru
committed
lint, reduce # of buffers used!
1 parent e3134a0 commit e3566c8

File tree

3 files changed

+69
-59
lines changed

3 files changed

+69
-59
lines changed

adafruit_wiznet5k/__init__.py

Whitespace-only changes.

adafruit_wiznet5k/adafruit_wiznet5k.py

Lines changed: 56 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@
4141
"""
4242

4343
import time
44-
import adafruit_bus_device.spi_device as spidev
4544
from micropython import const
4645

46+
from adafruit_bus_device.spi_device import SPIDevice
4747
import adafruit_wiznet5k.adafruit_wiznet5k_dhcp as dhcp
4848

4949

@@ -113,16 +113,24 @@
113113
SOCK_SIZE = const(0x800) # MAX W5k socket size
114114
# Register commands
115115
MR_RST = const(0x80) # Mode Register RST
116+
# Socket mode register
117+
SNMR_CLOSE = const(0x00)
118+
SNMR_TCP = const(0x21)
119+
SNMR_UDP = const(0x02)
120+
SNMR_IPRAW = const(0x03)
121+
SNMR_MACRAW = const(0x04)
122+
SNMR_PPPOE = const(0x05)
116123

117124
# pylint: enable=bad-whitespace
118-
125+
MAX_PACKET = const(4000)
126+
LOCAL_PORT = const(0x400)
119127
# Default hardware MAC address
120128
DEFAULT_MAC = (0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED)
121129

122130
# Maximum number of sockets to support, differs between chip versions.
123131
W5200_W5500_MAX_SOCK_NUM = const(0x08)
124132

125-
# UDP Socket Struct.
133+
# UDP socket struct.
126134
UDP_SOCK = {'bytes_remaining': 0,
127135
'remote_ip': 0,
128136
'remote_port': 0}
@@ -138,24 +146,14 @@ class WIZNET:
138146
139147
"""
140148

141-
# pylint: disable=bad-whitespace
142-
# Socket registers
143-
SNMR_CLOSE = const(0x00)
144-
SNMR_TCP = const(0x21)
145-
SNMR_UDP = const(0x02)
146-
SNMR_IPRAW = const(0x03)
147-
SNMR_MACRAW = const(0x04)
148-
SNMR_PPPOE = const(0x05)
149-
# pylint: enable=bad-whitespace
150-
151-
# pylint: disable=too-many-arguments
149+
# pylint: disable=too-many-arguments, too-many-public-methods
152150
def __init__(self, spi_bus, cs, reset=None,
153151
is_dhcp=True, mac=DEFAULT_MAC, debug=True):
154152
self._debug = debug
155153
self._chip_type = None
156-
self._device = spidev.SPIDevice(spi_bus, cs,
157-
baudrate=8000000,
158-
polarity=0, phase=0)
154+
self._device = SPIDevice(spi_bus, cs,
155+
baudrate=8000000,
156+
polarity=0, phase=0)
159157
# init c.s.
160158
self._cs = cs
161159

@@ -166,11 +164,16 @@ def __init__(self, spi_bus, cs, reset=None,
166164
reset.value = False
167165
time.sleep(0.1)
168166

167+
# Buffer for reading from module
168+
self._pbuff = bytearray(8)
169+
169170
# attempt to initialize the module
171+
self._ch_base_msb = 0
170172
assert self._w5100_init() == 1, "Failed to initialize WIZnet module."
171173
# Set MAC address
172174
self.mac_address = mac
173175
self._src_port = 0
176+
self._dns = 0
174177
# Set DHCP
175178
if is_dhcp:
176179
self.set_dhcp()
@@ -192,7 +195,7 @@ def set_dhcp(self, response_timeout=1):
192195
if self._debug:
193196
print("* Found DHCP server - setting configuration...")
194197
_ip = (_dhcp_client.local_ip[0], _dhcp_client.local_ip[1],
195-
_dhcp_client.local_ip[2], _dhcp_client.local_ip[3])
198+
_dhcp_client.local_ip[2], _dhcp_client.local_ip[3])
196199

197200
_subnet_mask = (_dhcp_client.subnet_mask[0], _dhcp_client.subnet_mask[1],
198201
_dhcp_client.subnet_mask[2], _dhcp_client.subnet_mask[3])
@@ -201,7 +204,7 @@ def set_dhcp(self, response_timeout=1):
201204
_dhcp_client.gateway_ip[2], _dhcp_client.gateway_ip[3])
202205

203206
_dns_addr = (_dhcp_client.dns_server_ip[0], _dhcp_client.dns_server_ip[1],
204-
_dhcp_client.dns_server_ip[2], _dhcp_client.dns_server_ip[3])
207+
_dhcp_client.dns_server_ip[2], _dhcp_client.dns_server_ip[3])
205208
self.ifconfig = ((_ip, _subnet_mask, _gw_addr, _dns_addr))
206209
return 0
207210
# Reset SRC_Port
@@ -258,12 +261,11 @@ def remote_ip(self, socket_num):
258261
:param int socket num: Desired socket.
259262
260263
"""
261-
remote_ip = bytearray(4)
262264
if socket_num >= self.max_sockets:
263-
return remote_ip
265+
return self._pbuff
264266
for octet in range(0, 4):
265-
remote_ip[octet] = self._read_socket(socket_num, REG_SNDIPR+octet)[0]
266-
return self.pretty_ip(remote_ip)
267+
self._pbuff[octet] = self._read_socket(socket_num, REG_SNDIPR+octet)[0]
268+
return self.pretty_ip(self._pbuff)
267269

268270
@property
269271
def link_status(self):
@@ -278,16 +280,19 @@ def remote_port(self):
278280
"""Returns the port of the host who sent the current incoming packet.
279281
280282
"""
281-
return self._remote_port
283+
return self.remote_port
282284

283285
@property
284286
def ifconfig(self):
285287
"""Returns the network configuration as a tuple."""
288+
# set subnet and gateway addresses
286289
for octet in range(0, 4):
287-
subnet_mask = self.read(REG_SUBR+octet, 0x00)
288-
params = (self.ip_address, subnet_mask, 0, self._dns)
290+
subnet_mask += self.read(REG_SUBR+octet, 0x04, subnet_mask[octet])
291+
gw_addr += self.read(REG_GAR+octet, 0x04, gw_addr[octet])
292+
params = (self.ip_address, subnet_mask, gw_addr, self._dns)
293+
return params
289294

290-
@ip_address.setter
295+
@ifconfig.setter
291296
def ifconfig(self, params):
292297
"""Sets network configuration to provided tuple in format:
293298
(ip_address, subnet_mask, gateway_address, dns_server).
@@ -349,10 +354,10 @@ def sw_reset(self):
349354
by writing to its MR register reset bit.
350355
351356
"""
352-
mr = self._read_mr()
357+
mode_reg = self._read_mr()
353358
self._write_mr(0x80)
354-
mr = self._read_mr()
355-
if mr[0] != 0x00:
359+
mode_reg = self._read_mr()
360+
if mode_reg[0] != 0x00:
356361
return -1
357362
return 0
358363

@@ -370,21 +375,21 @@ def _write_mr(self, data):
370375
"""
371376
self.write(REG_MR, 0x04, data)
372377

373-
def read(self, addr, cb, length=1, buffer=None):
378+
def read(self, addr, callback, length=1, buffer=None):
374379
"""Reads data from a register address.
375380
:param int addr: Register address.
376-
:param int cb: Common register block (?)
377381
378382
"""
379383
with self._device as bus_device:
380384
bus_device.write(bytes([addr >> 8]))
381385
bus_device.write(bytes([addr & 0xFF]))
382-
bus_device.write(bytes([cb]))
386+
bus_device.write(bytes([callback]))
383387
if buffer is None:
384388
result = bytearray(length)
385389
bus_device.readinto(result)
386390
return result
387391
bus_device.readinto(buffer, end=length)
392+
return buffer
388393

389394
def write(self, addr, callback, data):
390395
"""Writes data to a register address.
@@ -410,7 +415,7 @@ def _write_n(self, addr, callback, data):
410415
bus_device.write(bytes([addr >> 8]))
411416
bus_device.write(bytes([addr & 0xFF]))
412417
bus_device.write(bytes([callback]))
413-
for i in range(0, len(data)):
418+
for i, _ in enumerate(data):
414419
bus_device.write(bytes([data[i]]))
415420
return len
416421

@@ -447,16 +452,15 @@ def socket_available(self, socket_num, sock_type=SNMR_TCP):
447452
return res
448453
if res > 0:
449454
# parse the udp rx packet
450-
tmp_buf = bytearray(8)
451455
ret = 0
452456
# read the first 8 header bytes
453-
ret, tmp_buf = self.socket_read(socket_num, 8)
457+
ret, self._pbuff = self.socket_read(socket_num, 8)
454458
if ret > 0:
455-
UDP_SOCK['remote_ip'] = tmp_buf
456-
UDP_SOCK['remote_port'] = tmp_buf[4]
457-
UDP_SOCK['remote_port'] = (UDP_SOCK['remote_port'] << 8) + tmp_buf[5]
458-
UDP_SOCK['bytes_remaining'] = tmp_buf[6]
459-
UDP_SOCK['bytes_remaining'] = (UDP_SOCK['bytes_remaining'] << 8) + tmp_buf[7]
459+
UDP_SOCK['remote_ip'] = self._pbuff
460+
UDP_SOCK['remote_port'] = self._pbuff[4]
461+
UDP_SOCK['remote_port'] = (UDP_SOCK['remote_port'] << 8) + self._pbuff[5]
462+
UDP_SOCK['bytes_remaining'] = self._pbuff[6]
463+
UDP_SOCK['bytes_remaining'] = (UDP_SOCK['bytes_remaining'] << 8) + self._pbuff[7]
460464
ret = UDP_SOCK['bytes_remaining']
461465
return ret
462466
return 0
@@ -601,8 +605,9 @@ def socket_read(self, socket_num, length):
601605
if ret == 0:
602606
# no data on socket?
603607
status = self._read_snmr(socket_num)
604-
if(status == SNSR_SOCK_LISTEN or status == SNSR_SOCK_CLOSED \
605-
or status == SNSR_SOCK_CLOSE_WAIT):
608+
if status in (SNSR_SOCK_LISTEN,
609+
SNSR_SOCK_CLOSED,
610+
SNSR_SOCK_CLOSE_WAIT):
606611
# remote end closed its side of the connection, EOF state
607612
ret = 0
608613
resp = 0
@@ -669,7 +674,8 @@ def socket_write(self, socket_num, buffer):
669674
while free_size < ret:
670675
free_size = self._get_tx_free_size(socket_num)
671676
status = self.socket_status(socket_num)
672-
if (status != SNSR_SOCK_ESTABLISHED) and (status != SNSR_SOCK_CLOSE_WAIT):
677+
if status not in (SNSR_SOCK_ESTABLISHED,
678+
SNSR_SOCK_CLOSE_WAIT):
673679
ret = 0
674680
break
675681

@@ -725,10 +731,9 @@ def _get_tx_free_size(self, sock):
725731
return val
726732

727733
def _read_snrx_rd(self, sock):
728-
buf = bytearray(2)
729-
buf[0] = self._read_socket(sock, REG_SNRX_RD)[0]
730-
buf[1] = self._read_socket(sock, REG_SNRX_RD+1)[0]
731-
return buf[0] << 8 | buf[1]
734+
self._pbuff[0] = self._read_socket(sock, REG_SNRX_RD)[0]
735+
self._pbuff[1] = self._read_socket(sock, REG_SNRX_RD+1)[0]
736+
return self._pbuff[0] << 8 | self._pbuff[1]
732737

733738

734739
def _write_snrx_rd(self, sock, data):
@@ -740,10 +745,9 @@ def _write_sntx_wr(self, sock, data):
740745
self._write_socket(sock, REG_SNTX_WR+1, data & 0xff)
741746

742747
def _read_sntx_wr(self, sock):
743-
buf = bytearray(2)
744-
buf[0] = self._read_socket(sock, 0x0024)[0]
745-
buf[1] = self._read_socket(sock, 0x0024+1)[0]
746-
return buf[0] << 8 | buf[1]
748+
self._pbuff[0] = self._read_socket(sock, 0x0024)[0]
749+
self._pbuff[1] = self._read_socket(sock, 0x0024+1)[0]
750+
return self._pbuff[0] << 8 | self._pbuff[1]
747751

748752

749753
def _read_sntx_fsr(self, sock):

adafruit_wiznet5k/adafruit_wiznet5k_dhcp.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,11 @@
7272
DHCP_SERVER_PORT = const(67)
7373
# DHCP Lease Time, in seconds
7474
DEFAULT_LEASE_TIME = const(900)
75-
7675
BROADCAST_SERVER_ADDR = 255, 255, 255, 255
77-
_BUFF = bytearray(317)
7876

7977
# pylint: enable=bad-whitespace
8078

79+
_BUFF = bytearray(317)
8180

8281
class DHCP:
8382
"""W5k DHCP Client implementation.
@@ -88,12 +87,10 @@ class DHCP:
8887
:param bool debug: Enable debugging output.
8988
9089
"""
91-
92-
# pylint: too-many-arguments, too-many-instance-attributes
90+
91+
# pylint: disable=too-many-arguments, too-many-instance-attributes
9392
def __init__(self, eth, mac_address, timeout=1, timeout_response=1):
94-
self._lease_time = 0
95-
self._t1 = 0
96-
self._t2 = 0
93+
9794
self._timeout = timeout
9895
self._response_timeout = timeout_response
9996
self._mac_address = mac_address
@@ -103,15 +100,24 @@ def __init__(self, eth, mac_address, timeout=1, timeout_response=1):
103100
self._sock = socket.socket(type=socket.SOCK_DGRAM)
104101
self._sock.settimeout(timeout)
105102

103+
# DHCP state machine
106104
self._dhcp_state = STATE_DHCP_START
107105
self._initial_xid = 0
108106
self._transaction_id = 0
109107

108+
# DHCP server configuration
110109
self.dhcp_server_ip = 0
111110
self.local_ip = 0
112111
self.gateway_ip = 0
113112
self.subnet_mask = 0
114113
self.dns_server_ip = 0
114+
# Lease configuration
115+
self._lease_time = 0
116+
self._last_check_lease_ms = 0
117+
self._renew_in_sec = 0
118+
self._rebind_in_sec = 0
119+
self._t1 = 0
120+
self._t2 = 0
115121

116122
def send_dhcp_message(self, state, time_elapsed):
117123
"""Assemble and send a DHCP message packet to a socket.

0 commit comments

Comments
 (0)