MCPcopy Create free account
hub / github.com/ExpressLRS/ExpressLRS / read_line

Method read_line

src/python/SerialHelper.py:31–62  ·  view source on GitHub ↗
(self, timeout=None)

Source from the content-addressed store, hash-verified

29 bytes(d, encoding) if type(d) == str else d for d in delimiters]
30
31 def read_line(self, timeout=None):
32 if timeout is None or timeout <= 0.:
33 timeout = self.timeout
34 buf = self.buf
35 def has_delimiter():
36 for d in self.delimiters:
37 if d in buf:
38 return True
39
40 start = time.time()
41 while not has_delimiter() and ((time.time() - start) < timeout):
42 i = max(0, min(2048, self.serial.in_waiting))
43 data = self.serial.read(i)
44 if not data:
45 continue
46
47 buf.extend(data)
48
49 for delimiter in self.delimiters:
50 i = buf.find(delimiter)
51 if i >= 0:
52 offset = i+len(delimiter)
53 r = buf[:offset]
54 self.buf = buf[offset:]
55 return self.__convert_to_str(r)
56
57 # No match
58
59 # Timeout, reset buffer and return empty string
60 #print("TIMEOUT! Got:\n>>>>>>\n{}\n<<<<<<\n".format(buf))
61 self.buf = bytearray()
62 return ""
63
64 def write(self, data):
65 serial = self.serial

Callers 3

bf_passthrough_initFunction · 0.95
reset_to_bootloaderFunction · 0.95
_validate_serialrxFunction · 0.80

Calls 2

__convert_to_strMethod · 0.95
readMethod · 0.45

Tested by

no test coverage detected