burst-link-protocol 0.1.1__cp312-abi3-win32.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
burst_interface_c.pyd ADDED
Binary file
burst_interface_c.pyi ADDED
@@ -0,0 +1,8 @@
1
+
2
+
3
+ class BurstInterfaceC:
4
+ def __init__(self) -> None: ...
5
+
6
+ def decode(self, data: bytes, fail_on_crc_error: bool = False) -> list: ...
7
+
8
+ def encode(self, packets: list) -> bytes: ...
@@ -0,0 +1,4 @@
1
+ from burst_interface_c import BurstInterfaceC
2
+ from .main import BurstInterfacePy
3
+
4
+ __all__ = ["BurstInterfaceC", "BurstInterfacePy"]
@@ -0,0 +1,41 @@
1
+ from cobs import cobs
2
+ from crc import Calculator,Crc16
3
+
4
+ crc = Calculator(Crc16.IBM_3740)
5
+
6
+ class BurstInterfacePy:
7
+ buffer = b""
8
+
9
+ def __init__(self):
10
+ pass
11
+
12
+ @staticmethod
13
+ def crc16( data: bytes) -> bytes:
14
+ return crc.checksum(data).to_bytes(2, "big")
15
+
16
+
17
+ @staticmethod
18
+ def encode_packet(packet: bytes) -> bytes:
19
+ packet_with_crc = packet + BurstInterfacePy.crc16(packet)
20
+ return cobs.encode(packet_with_crc) + b"\x00"
21
+
22
+ @staticmethod
23
+ def decode_packet(packet: bytes) -> bytes:
24
+ # decode and check crc
25
+ decoded = cobs.decode(packet)
26
+
27
+ if BurstInterfacePy.crc16(decoded[:-2]) != decoded[-2:]:
28
+ raise ValueError("CRC mismatch")
29
+
30
+ return decoded[:-2]
31
+
32
+ def encode(self, packets: list[bytes]) -> bytes:
33
+ return b"".join([self.encode_packet(packet) for packet in packets])
34
+
35
+ def decode(self, steam: bytes) -> list[bytes]:
36
+ self.buffer += steam
37
+ separated_packets = self.buffer.split(b"\x00")
38
+ # Add last packet to buffer
39
+ self.buffer = separated_packets.pop()
40
+ return [self.decode_packet(packet) for packet in separated_packets]
41
+
@@ -0,0 +1,89 @@
1
+ Metadata-Version: 2.1
2
+ Name: burst-link-protocol
3
+ Version: 0.1.1
4
+ Summary: Binary Utility for Reliable Stream Transfer (BURST) is a library for encoding and decoding binary data streams into and from a byte stream.
5
+ Author-Email: Floris vernieuwe <floris@vernieuwe.eu>
6
+ Requires-Python: <4.0,>=3.10
7
+ Requires-Dist: cobs<2.0.0,>=1.2.1
8
+ Requires-Dist: numpy<3.0.0,>=2.2.3
9
+ Requires-Dist: crc<8.0.0,>=7.1.0
10
+ Requires-Dist: pytest<9.0.0,>=8.3.4
11
+ Requires-Dist: pytest-cov<7.0.0,>=6.0.0
12
+ Requires-Dist: pytest-benchmark<6.0.0,>=5.1.0
13
+ Requires-Dist: scikit-build-core[pyproject]<0.11.0,>=0.10.7; extra == "dev"
14
+ Requires-Dist: nanobind<3.0.0,>=2.5.0; extra == "dev"
15
+ Requires-Dist: pytest<9.0.0,>=8.3.4; extra == "dev"
16
+ Requires-Dist: pytest-cov<7.0.0,>=6.0.0; extra == "dev"
17
+ Requires-Dist: pytest-benchmark<6.0.0,>=5.1.0; extra == "dev"
18
+ Provides-Extra: dev
19
+ Description-Content-Type: text/markdown
20
+
21
+ # BURST interface
22
+ Binary Utility for Reliable Stream Transfer (BURST) is a library for encoding and decoding binary data streams, a packet format.
23
+ It combines a 16 bit checksum and cobs encoding to convert packets into a format that can be sent over a stream.
24
+
25
+ This projects is written so it can be used both in python, c and c++ based project
26
+
27
+ # Installation instuctions
28
+
29
+ ## As an user
30
+
31
+ Simple installation
32
+ ```sh
33
+ pip install -e .
34
+ ```
35
+
36
+ ## As a developer
37
+
38
+ Fast build
39
+ ```sh
40
+ pip install --no-build-isolation -ve .
41
+ ```
42
+
43
+ Auto rebuild on run
44
+ ```sh
45
+ pip install --no-build-isolation -Ceditable.rebuild=true -ve .
46
+ ```
47
+
48
+
49
+ ### Python Stub files generation
50
+
51
+ They are generated automatically buy can also be generated
52
+
53
+ ```
54
+ python -m nanobind.stubgen -m nanobind_example_ext
55
+ ```
56
+
57
+ # Publishing instructions
58
+
59
+ ```
60
+
61
+ ```
62
+
63
+ # Test
64
+
65
+ ```sh
66
+ pytest
67
+ ```
68
+
69
+ # BURST protocol
70
+ TODO
71
+ * STAGE 1
72
+ * Convert cpp to c files [OK]
73
+ * Formalise naming [OK]
74
+ * Add c encode functions [OK]
75
+ * Test c encode functions [OK]
76
+ * Update README
77
+ * Improve poetry.toml [OK]
78
+
79
+
80
+ * STAGE 2
81
+ * Add CI/CD on github to compile x86
82
+ * Fix dependencies once compilation succeeds
83
+ * Publish on pypi
84
+ * STAGE 3
85
+ * Add a way to get C test coverage
86
+
87
+
88
+
89
+
@@ -0,0 +1,7 @@
1
+ burst_interface_c.pyd,sha256=XyoL6XO019bPpu62mS01OTE2cfGnBsd__Q_CHPzo-no,351232
2
+ burst_interface_c.pyi,sha256=XeNtZqvqT2bwCE7Le_DeKOiGPn83dw5WSZteHMzLo0A,201
3
+ burst_link_protocol/__init__.py,sha256=KISkm1e-VcDx29uyFp-4M76cox3LBfcPCOrrv9gv1QM,135
4
+ burst_link_protocol/main.py,sha256=Eicgf3yp8DxnI5SspCKD7jm5C4tNZWKKBoYdCfGrUis,1211
5
+ burst_link_protocol-0.1.1.dist-info/METADATA,sha256=2R1FyQ8xU5QFI6PDIHE9yu-JV-kkl8TaMf_4RMf7xpE,2106
6
+ burst_link_protocol-0.1.1.dist-info/WHEEL,sha256=PSf5v5Sqi9g580_jBIo7BVvLhbCJLtxUm2z36OA4YZQ,101
7
+ burst_link_protocol-0.1.1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: scikit-build-core 0.10.7
3
+ Root-Is-Purelib: false
4
+ Tag: cp312-abi3-win32
5
+