From e480277dc902f74f8474deb5e594f530e630e9ed Mon Sep 17 00:00:00 2001 From: tekktrik <89490472+tekktrik@users.noreply.github.com> Date: Sat, 22 Jan 2022 00:18:50 -0500 Subject: [PATCH 1/8] Allow optional nbytes parameter for recv_into --- adafruit_esp32spi/adafruit_esp32spi_socket.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/adafruit_esp32spi/adafruit_esp32spi_socket.py b/adafruit_esp32spi/adafruit_esp32spi_socket.py index f340807..3ccf070 100644 --- a/adafruit_esp32spi/adafruit_esp32spi_socket.py +++ b/adafruit_esp32spi/adafruit_esp32spi_socket.py @@ -161,14 +161,14 @@ def recv(self, bufsize=0): gc.collect() return ret - def recv_into(self, buffer): + def recv_into(self, buffer, nbytes=None): """Read some bytes from the connected remote address into a given buffer :param bytearray buffer: The buffer to read into """ stamp = time.monotonic() - to_read = len(buffer) + to_read = len(buffer) if nbytes is None else nbytes received = [] while to_read > 0: # print("Bytes to read:", to_read) From 2cf98c0cfd3ad8f21fe7c778c86c24db89d53fc1 Mon Sep 17 00:00:00 2001 From: tekktrik <89490472+tekktrik@users.noreply.github.com> Date: Sat, 22 Jan 2022 00:52:51 -0500 Subject: [PATCH 2/8] Correct number of bytes to read math, add param to docstring --- adafruit_esp32spi/adafruit_esp32spi_socket.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/adafruit_esp32spi/adafruit_esp32spi_socket.py b/adafruit_esp32spi/adafruit_esp32spi_socket.py index 3ccf070..338bf32 100644 --- a/adafruit_esp32spi/adafruit_esp32spi_socket.py +++ b/adafruit_esp32spi/adafruit_esp32spi_socket.py @@ -165,12 +165,16 @@ def recv_into(self, buffer, nbytes=None): """Read some bytes from the connected remote address into a given buffer :param bytearray buffer: The buffer to read into + :param int nbytes: (Optional) Number of bytes to receive + default is as many as possible before filling the + buffer or timing out """ stamp = time.monotonic() - to_read = len(buffer) if nbytes is None else nbytes + to_read = len(buffer) + nbytes = to_read if nbytes is None else to_read - nbytes received = [] - while to_read > 0: + while to_read > len(buffer) - nbytes: # print("Bytes to read:", to_read) avail = self.available() if avail: From adacbb1f61f924a88c31afe52222cc401f8d3460 Mon Sep 17 00:00:00 2001 From: tekktrik <89490472+tekktrik@users.noreply.github.com> Date: Sat, 22 Jan 2022 00:59:26 -0500 Subject: [PATCH 3/8] Fix limit of reads based on nbytes --- adafruit_esp32spi/adafruit_esp32spi_socket.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/adafruit_esp32spi/adafruit_esp32spi_socket.py b/adafruit_esp32spi/adafruit_esp32spi_socket.py index 338bf32..3dd7cf7 100644 --- a/adafruit_esp32spi/adafruit_esp32spi_socket.py +++ b/adafruit_esp32spi/adafruit_esp32spi_socket.py @@ -172,9 +172,9 @@ def recv_into(self, buffer, nbytes=None): stamp = time.monotonic() to_read = len(buffer) - nbytes = to_read if nbytes is None else to_read - nbytes + limit = to_read if nbytes is None else to_read - nbytes received = [] - while to_read > len(buffer) - nbytes: + while to_read > limit: # print("Bytes to read:", to_read) avail = self.available() if avail: From 6f3d99f7a24e478affd5e04077ef76883dc2e391 Mon Sep 17 00:00:00 2001 From: tekktrik <89490472+tekktrik@users.noreply.github.com> Date: Sat, 22 Jan 2022 01:07:39 -0500 Subject: [PATCH 4/8] Change limit to 0 if nbytes is None --- adafruit_esp32spi/adafruit_esp32spi_socket.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adafruit_esp32spi/adafruit_esp32spi_socket.py b/adafruit_esp32spi/adafruit_esp32spi_socket.py index 3dd7cf7..6a68cf3 100644 --- a/adafruit_esp32spi/adafruit_esp32spi_socket.py +++ b/adafruit_esp32spi/adafruit_esp32spi_socket.py @@ -172,7 +172,7 @@ def recv_into(self, buffer, nbytes=None): stamp = time.monotonic() to_read = len(buffer) - limit = to_read if nbytes is None else to_read - nbytes + limit = 0 if nbytes is None else to_read - nbytes received = [] while to_read > limit: # print("Bytes to read:", to_read) From 201e925fff5f3f056273fec27d843bdab64371be Mon Sep 17 00:00:00 2001 From: tekktrik <89490472+tekktrik@users.noreply.github.com> Date: Sat, 22 Jan 2022 18:15:37 -0500 Subject: [PATCH 5/8] Fix default nbytes and behavior of recv_into --- adafruit_esp32spi/adafruit_esp32spi_socket.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/adafruit_esp32spi/adafruit_esp32spi_socket.py b/adafruit_esp32spi/adafruit_esp32spi_socket.py index 6a68cf3..b5f3d8a 100644 --- a/adafruit_esp32spi/adafruit_esp32spi_socket.py +++ b/adafruit_esp32spi/adafruit_esp32spi_socket.py @@ -161,20 +161,24 @@ def recv(self, bufsize=0): gc.collect() return ret - def recv_into(self, buffer, nbytes=None): + def recv_into(self, buffer, nbytes=0): """Read some bytes from the connected remote address into a given buffer :param bytearray buffer: The buffer to read into - :param int nbytes: (Optional) Number of bytes to receive - default is as many as possible before filling the + :param int nbytes: (Optional) Number of bytes to receive default is 0, + which will receive as many bytes as possible before filling the buffer or timing out """ + if not (0 <= nbytes <= len(buffer)): + raise ValueError( + "Can only read number of bytes between 0 and length of supplied buffer" + ) + stamp = time.monotonic() to_read = len(buffer) - limit = 0 if nbytes is None else to_read - nbytes received = [] - while to_read > limit: + while to_read > nbytes: # print("Bytes to read:", to_read) avail = self.available() if avail: From eec2c72130c6c5ce2a9e4cd595f3a6f447332e99 Mon Sep 17 00:00:00 2001 From: tekktrik <89490472+tekktrik@users.noreply.github.com> Date: Sat, 22 Jan 2022 20:21:34 -0500 Subject: [PATCH 6/8] Remove superfluous not --- adafruit_esp32spi/adafruit_esp32spi_socket.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adafruit_esp32spi/adafruit_esp32spi_socket.py b/adafruit_esp32spi/adafruit_esp32spi_socket.py index b5f3d8a..f6f1865 100644 --- a/adafruit_esp32spi/adafruit_esp32spi_socket.py +++ b/adafruit_esp32spi/adafruit_esp32spi_socket.py @@ -170,7 +170,7 @@ def recv_into(self, buffer, nbytes=0): buffer or timing out """ - if not (0 <= nbytes <= len(buffer)): + if not 0 <= nbytes <= len(buffer): raise ValueError( "Can only read number of bytes between 0 and length of supplied buffer" ) From 43cb366e26ea711ddfd49792d3c0c397a4a85712 Mon Sep 17 00:00:00 2001 From: Alec Delaney Date: Sun, 23 Jan 2022 22:08:24 -0500 Subject: [PATCH 7/8] Readd appending data to list --- adafruit_esp32spi/adafruit_esp32spi_socket.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adafruit_esp32spi/adafruit_esp32spi_socket.py b/adafruit_esp32spi/adafruit_esp32spi_socket.py index f6f1865..b664da9 100644 --- a/adafruit_esp32spi/adafruit_esp32spi_socket.py +++ b/adafruit_esp32spi/adafruit_esp32spi_socket.py @@ -184,7 +184,7 @@ def recv_into(self, buffer, nbytes=0): if avail: stamp = time.monotonic() recv = _the_interface.socket_read(self._socknum, min(to_read, avail)) - # received.append(recv) + received.append(recv) start = len(buffer) - to_read to_read -= len(recv) end = len(buffer) - to_read From 2542b261b7b5063a2d05b4066a1ed2816005a8b1 Mon Sep 17 00:00:00 2001 From: Alec Delaney Date: Sun, 23 Jan 2022 22:08:42 -0500 Subject: [PATCH 8/8] Implement correct usage of limit based on nbytes argument --- adafruit_esp32spi/adafruit_esp32spi_socket.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/adafruit_esp32spi/adafruit_esp32spi_socket.py b/adafruit_esp32spi/adafruit_esp32spi_socket.py index b664da9..c35a94b 100644 --- a/adafruit_esp32spi/adafruit_esp32spi_socket.py +++ b/adafruit_esp32spi/adafruit_esp32spi_socket.py @@ -177,8 +177,9 @@ def recv_into(self, buffer, nbytes=0): stamp = time.monotonic() to_read = len(buffer) + limit = 0 if nbytes == 0 else to_read - nbytes received = [] - while to_read > nbytes: + while to_read > limit: # print("Bytes to read:", to_read) avail = self.available() if avail: