コード例 #1
0
 def test_escape(self):
     self.assertEqual(
         encode.information_frame(0x7e, b'\x7d'),
         FLAG + b'\x7d\x5e\x00\x7d\x5d' + _fcs(b'\x7e\x00\x7d') + FLAG)
     self.assertEqual(
         encode.information_frame(0x7d, b'A\x7e\x7dBC'),
         FLAG + b'\x7d\x5d\x00A\x7d\x5e\x7d\x5dBC' +
         _fcs(b'\x7d\x00A\x7e\x7dBC') + FLAG)
コード例 #2
0
def channel_output(writer: Callable[[bytes], Any],
                   address: int = DEFAULT_ADDRESS,
                   delay_s: float = 0) -> Callable[[bytes], None]:
    """Returns a function that can be used as a channel output for pw_rpc."""

    if delay_s:

        def slow_write(data: bytes) -> None:
            """Slows down writes in case unbuffered serial is in use."""
            for byte in data:
                time.sleep(delay_s)
                writer(bytes([byte]))

        return lambda data: slow_write(encode.information_frame(address, data))

    return lambda data: writer(encode.information_frame(address, data))
コード例 #3
0
 def test_1byte(self):
     self.assertEqual(encode.information_frame(0, b'A'),
                      FLAG + _with_fcs(b'\0\0A') + FLAG)
コード例 #4
0
 def test_multibyte(self):
     self.assertEqual(encode.information_frame(0, b'123456789'),
                      FLAG + _with_fcs(b'\x00\x00123456789') + FLAG)
コード例 #5
0
 def test_empty(self):
     self.assertEqual(encode.information_frame(0, b''),
                      FLAG + _with_fcs(b'\0\0') + FLAG)
     self.assertEqual(encode.information_frame(0x1a, b''),
                      FLAG + _with_fcs(b'\x1a\0') + FLAG)