8000 WIP tools/mprelp: When receiving binary data, loop until all data is … · micropython/micropython@7d80767 · GitHub
[go: up one dir, main page]

Skip to content

Commit 7d80767

Browse files
pi-anldpgeorge
authored andcommitted
WIP tools/mprelp: When receiving binary data, loop until all data is read.
Flush input buffer when a command begins
1 parent 0a293bc commit 7d80767

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

tools/mprepl.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ def rdinto(self, buf):
8686
return self.fin.readinto(buf)
8787
def begin(self, type):
8888
micropython.kbd_intr(-1)
89+
while(self.fin.any()):
90+
self.fin.read(1)
8991
self.fout.write(bytearray([0x18, type]))
9092
def end(self):
9193
micropython.kbd_intr(3)
@@ -103,10 +105,19 @@ def wr_int32(self, i):
103105
self.fout.write(struct.pack('<i', i))
104106
def rd_bytes(self):
105107
n = struct.unpack('<H', self.rd(2))[0]
106-
return self.rd(n)
108+
buf = bytearray(n)
109+
mv = memoryview(buf)
110+
r = 0
111+
while r<n:
112+
r += self.rdinto(mv[r:])
113+
return buf
107114
def rd_bytes_into(self, buf):
108115
n = struct.unpack('<H', self.rd(2))[0]
109-
return self.rdinto(memoryview(buf)[:n])
116+
mv = memoryview(buf)
117+
r = 0
118+
while r < n:
119+
r += self.rdinto(mv[r:])
120+
return r
110121
def wr_bytes(self, b):
111122
self.fout.write(struct.pack('<H', len(b)))
112123
self.fout.write(b)

0 commit comments

Comments
 (0)
0