burst-link-protocol 1.0.0__tar.gz → 1.0.2__tar.gz
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_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/PKG-INFO +29 -40
- burst_link_protocol-1.0.2/README.md +57 -0
- burst_link_protocol-1.0.2/ROADMAP.md +23 -0
- burst_link_protocol-1.0.2/docs/design.drawio +143 -0
- burst_link_protocol-1.0.2/docs/design.svg +1 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/pyproject.toml +1 -1
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/src/decoder.c +1 -1
- burst_link_protocol-1.0.0/README.md +0 -69
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/.github/dependabot.yml +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/.github/workflows/pip.yml +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/.github/workflows/wheel.yml +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/.gitignore +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/.vscode/c_cpp_properties.json +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/.vscode/launch.json +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/.vscode/settings.json +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/.vscode/tasks.json +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/CMakeLists.txt +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/LICENSE +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/src/burst_interface.h +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/src/burst_link_protocol/__init__.py +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/src/burst_link_protocol/main.py +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/src/crc.c +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/src/crc.h +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/src/encoder.c +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/src/python_bindings.cpp +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/test/test_c_validation.py +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/test/test_python_validation.py +0 -0
- {burst_link_protocol-1.0.0 → burst_link_protocol-1.0.2}/test/test_speed.py +0 -0
@@ -1,8 +1,9 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: burst-link-protocol
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.2
|
4
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
5
|
Author-Email: Floris vernieuwe <floris@vernieuwe.eu>
|
6
|
+
License-File: LICENSE
|
6
7
|
Project-URL: Repository, https://github.com/Florioo/burst-link-protocol
|
7
8
|
Requires-Python: <4.0,>=3.10
|
8
9
|
Requires-Dist: cobs<2.0.0,>=1.2.1
|
@@ -11,30 +12,44 @@ Requires-Dist: crc<8.0.0,>=7.1.0
|
|
11
12
|
Requires-Dist: pytest<9.0.0,>=8.3.4
|
12
13
|
Requires-Dist: pytest-cov<7.0.0,>=6.0.0
|
13
14
|
Requires-Dist: pytest-benchmark<6.0.0,>=5.1.0
|
15
|
+
Provides-Extra: dev
|
14
16
|
Requires-Dist: scikit-build-core[pyproject]<0.11.0,>=0.10.7; extra == "dev"
|
15
17
|
Requires-Dist: nanobind<3.0.0,>=2.5.0; extra == "dev"
|
16
18
|
Requires-Dist: pytest<9.0.0,>=8.3.4; extra == "dev"
|
17
19
|
Requires-Dist: pytest-cov<7.0.0,>=6.0.0; extra == "dev"
|
18
20
|
Requires-Dist: pytest-benchmark<6.0.0,>=5.1.0; extra == "dev"
|
19
|
-
Provides-Extra: dev
|
20
21
|
Description-Content-Type: text/markdown
|
21
22
|
|
22
|
-
# BURST
|
23
|
-
Binary Utility for Reliable Stream Transfer (BURST) is a library
|
24
|
-
|
23
|
+
# BURST link protocol
|
24
|
+
Binary Utility for Reliable Stream Transfer (BURST) is a cross-platform library that provides a robust link layer protocol for transmitting binary data over streams (e.g. UART). It ensures data integrity by applying a 16-bit checksum and utilizes COBS (Consistent Overhead Byte Stuffing) encoding to format packets efficiently.
|
25
|
+
|
26
|
+
|
27
|
+
## Features
|
28
|
+
* Multi-language Support: Seamless integration with Python, C, and C++ projects.
|
29
|
+
* Reliable Transmission: 16-bit checksum ensures error detection.
|
30
|
+
* Efficient Encoding: Uses COBS encoding to convert data into a stream-friendly format.
|
31
|
+
|
32
|
+
## Design
|
33
|
+
The following diagram illustrates the data flow within the BURST protocol:
|
25
34
|
|
26
|
-
|
35
|
+

|
27
36
|
|
28
|
-
# Installation
|
37
|
+
# Installation
|
29
38
|
|
30
|
-
##
|
39
|
+
## Prebuilt Wheels
|
31
40
|
|
32
|
-
|
41
|
+
Prebuilt wheels are available for Windows, Linux and MacOS, they can be installed using pip:
|
33
42
|
```sh
|
34
|
-
pip install -
|
43
|
+
pip install burst-link-protocol
|
35
44
|
```
|
36
45
|
|
37
|
-
##
|
46
|
+
## From Source
|
47
|
+
Note: You need a valid C++ compiler and Python 3.7+ installed on your system.
|
48
|
+
|
49
|
+
Basic installation
|
50
|
+
```sh
|
51
|
+
pip install -e .
|
52
|
+
```
|
38
53
|
|
39
54
|
Fast build
|
40
55
|
```sh
|
@@ -55,36 +70,10 @@ They are generated automatically buy can also be generated
|
|
55
70
|
python -m nanobind.stubgen -m nanobind_example_ext
|
56
71
|
```
|
57
72
|
|
58
|
-
|
59
|
-
|
60
|
-
```
|
61
|
-
|
62
|
-
```
|
63
|
-
|
64
|
-
# Test
|
73
|
+
### Test
|
65
74
|
|
66
75
|
```sh
|
67
|
-
pytest
|
76
|
+
pytest test
|
68
77
|
```
|
69
78
|
|
70
|
-
# BURST protocol
|
71
|
-
TODO
|
72
|
-
* STAGE 1
|
73
|
-
* Convert cpp to c files [OK]
|
74
|
-
* Formalise naming [OK]
|
75
|
-
* Add c encode functions [OK]
|
76
|
-
* Test c encode functions [OK]
|
77
|
-
* Update README
|
78
|
-
* Improve poetry.toml [OK]
|
79
|
-
|
80
|
-
|
81
|
-
* STAGE 2
|
82
|
-
* Add CI/CD on github to compile x86
|
83
|
-
* Fix dependencies once compilation succeeds
|
84
|
-
* Publish on pypi
|
85
|
-
* STAGE 3
|
86
|
-
* Add a way to get C test coverage
|
87
|
-
|
88
|
-
|
89
|
-
|
90
79
|
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# BURST link protocol
|
2
|
+
Binary Utility for Reliable Stream Transfer (BURST) is a cross-platform library that provides a robust link layer protocol for transmitting binary data over streams (e.g. UART). It ensures data integrity by applying a 16-bit checksum and utilizes COBS (Consistent Overhead Byte Stuffing) encoding to format packets efficiently.
|
3
|
+
|
4
|
+
|
5
|
+
## Features
|
6
|
+
* Multi-language Support: Seamless integration with Python, C, and C++ projects.
|
7
|
+
* Reliable Transmission: 16-bit checksum ensures error detection.
|
8
|
+
* Efficient Encoding: Uses COBS encoding to convert data into a stream-friendly format.
|
9
|
+
|
10
|
+
## Design
|
11
|
+
The following diagram illustrates the data flow within the BURST protocol:
|
12
|
+
|
13
|
+

|
14
|
+
|
15
|
+
# Installation
|
16
|
+
|
17
|
+
## Prebuilt Wheels
|
18
|
+
|
19
|
+
Prebuilt wheels are available for Windows, Linux and MacOS, they can be installed using pip:
|
20
|
+
```sh
|
21
|
+
pip install burst-link-protocol
|
22
|
+
```
|
23
|
+
|
24
|
+
## From Source
|
25
|
+
Note: You need a valid C++ compiler and Python 3.7+ installed on your system.
|
26
|
+
|
27
|
+
Basic installation
|
28
|
+
```sh
|
29
|
+
pip install -e .
|
30
|
+
```
|
31
|
+
|
32
|
+
Fast build
|
33
|
+
```sh
|
34
|
+
pip install --no-build-isolation -ve .
|
35
|
+
```
|
36
|
+
|
37
|
+
Auto rebuild on run
|
38
|
+
```sh
|
39
|
+
pip install --no-build-isolation -Ceditable.rebuild=true -ve .
|
40
|
+
```
|
41
|
+
|
42
|
+
|
43
|
+
### Python Stub files generation
|
44
|
+
|
45
|
+
They are generated automatically buy can also be generated
|
46
|
+
|
47
|
+
```
|
48
|
+
python -m nanobind.stubgen -m nanobind_example_ext
|
49
|
+
```
|
50
|
+
|
51
|
+
### Test
|
52
|
+
|
53
|
+
```sh
|
54
|
+
pytest test
|
55
|
+
```
|
56
|
+
|
57
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
# Roadmap
|
3
|
+
|
4
|
+
## STAGE 0 ✅
|
5
|
+
- Initial POC
|
6
|
+
|
7
|
+
## STAGE 1 ✅
|
8
|
+
- ✅ Convert cpp to c files
|
9
|
+
- ✅ Formalise naming
|
10
|
+
- ✅ Add c encode functions
|
11
|
+
- ✅ Test c encode functions
|
12
|
+
- ✅ Update README
|
13
|
+
- ✅ Improve poetry.toml
|
14
|
+
|
15
|
+
## STAGE 2 ✅
|
16
|
+
- ✅ Add CI/CD on github to compile x86
|
17
|
+
- ✅ Publish on pypi
|
18
|
+
|
19
|
+
## STAGE 3
|
20
|
+
- ⬜️ Add a way to get C test coverage
|
21
|
+
- ⬜️ Add test report as a badge
|
22
|
+
- ⬜️ Fix dependencies once compilation succeeds
|
23
|
+
|
@@ -0,0 +1,143 @@
|
|
1
|
+
<mxfile host="65bd71144e" scale="2" border="0">
|
2
|
+
<diagram id="Die8snK1uMh-dL0AAzdI" name="Page-1">
|
3
|
+
<mxGraphModel dx="635" dy="1936" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
4
|
+
<root>
|
5
|
+
<mxCell id="0"/>
|
6
|
+
<mxCell id="1" parent="0"/>
|
7
|
+
<mxCell id="39" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="2" target="38">
|
8
|
+
<mxGeometry relative="1" as="geometry"/>
|
9
|
+
</mxCell>
|
10
|
+
<mxCell id="2" value="<span style="color: rgb(51, 51, 51);">Payload</span>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
|
11
|
+
<mxGeometry x="280" y="40" width="280" height="40" as="geometry"/>
|
12
|
+
</mxCell>
|
13
|
+
<mxCell id="3" value="CRC16" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
|
14
|
+
<mxGeometry x="560" y="40" width="80" height="40" as="geometry"/>
|
15
|
+
</mxCell>
|
16
|
+
<mxCell id="4" value="COBS encoded data" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
|
17
|
+
<mxGeometry x="280" y="160" width="360" height="40" as="geometry"/>
|
18
|
+
</mxCell>
|
19
|
+
<mxCell id="6" value="NULL" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#bac8d3;strokeColor=#23445d;" parent="1" vertex="1">
|
20
|
+
<mxGeometry x="640" y="160" width="40" height="40" as="geometry"/>
|
21
|
+
</mxCell>
|
22
|
+
<mxCell id="35" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="33" target="34">
|
23
|
+
<mxGeometry relative="1" as="geometry"/>
|
24
|
+
</mxCell>
|
25
|
+
<mxCell id="33" value="<span style="color: rgb(51, 51, 51);">Payload</span>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1">
|
26
|
+
<mxGeometry x="280" y="-80" width="280" height="40" as="geometry"/>
|
27
|
+
</mxCell>
|
28
|
+
<mxCell id="36" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="34" target="2">
|
29
|
+
<mxGeometry relative="1" as="geometry"/>
|
30
|
+
</mxCell>
|
31
|
+
<mxCell id="34" value="Calculate CRC" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
|
32
|
+
<mxGeometry x="377.5" y="-20" width="85" height="40" as="geometry"/>
|
33
|
+
</mxCell>
|
34
|
+
<mxCell id="38" value="Encode with COBS" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
|
35
|
+
<mxGeometry x="377.5" y="100" width="85" height="40" as="geometry"/>
|
36
|
+
</mxCell>
|
37
|
+
<mxCell id="40" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.391;entryY=0.029;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="38" target="4">
|
38
|
+
<mxGeometry relative="1" as="geometry"/>
|
39
|
+
</mxCell>
|
40
|
+
<mxCell id="RL1159NRFCOyJORJclhe-43" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;" edge="1" parent="1">
|
41
|
+
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
42
|
+
<mxPoint x="210" y="240" as="sourcePoint"/>
|
43
|
+
<mxPoint x="760" y="240" as="targetPoint"/>
|
44
|
+
</mxGeometry>
|
45
|
+
</mxCell>
|
46
|
+
<mxCell id="RL1159NRFCOyJORJclhe-44" value="COBS encoded&nbsp;<span style="color: rgb(51, 51, 51);">data</span>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1">
|
47
|
+
<mxGeometry x="280" y="280" width="360" height="40" as="geometry"/>
|
48
|
+
</mxCell>
|
49
|
+
<mxCell id="RL1159NRFCOyJORJclhe-45" value="NULL" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#bac8d3;strokeColor=#23445d;" vertex="1" parent="1">
|
50
|
+
<mxGeometry x="640" y="280" width="40" height="40" as="geometry"/>
|
51
|
+
</mxCell>
|
52
|
+
<mxCell id="RL1159NRFCOyJORJclhe-54" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="RL1159NRFCOyJORJclhe-46" target="RL1159NRFCOyJORJclhe-52">
|
53
|
+
<mxGeometry relative="1" as="geometry"/>
|
54
|
+
</mxCell>
|
55
|
+
<mxCell id="RL1159NRFCOyJORJclhe-46" value="<span style="color: rgb(51, 51, 51);">Payload</span>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1">
|
56
|
+
<mxGeometry x="280" y="400" width="280" height="40" as="geometry"/>
|
57
|
+
</mxCell>
|
58
|
+
<mxCell id="RL1159NRFCOyJORJclhe-47" value="CRC16" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
|
59
|
+
<mxGeometry x="560" y="400" width="80" height="40" as="geometry"/>
|
60
|
+
</mxCell>
|
61
|
+
<mxCell id="RL1159NRFCOyJORJclhe-48" value="<span style="color: rgb(51, 51, 51);">Payload</span>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1">
|
62
|
+
<mxGeometry x="280" y="520" width="280" height="40" as="geometry"/>
|
63
|
+
</mxCell>
|
64
|
+
<mxCell id="RL1159NRFCOyJORJclhe-50" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="RL1159NRFCOyJORJclhe-49" target="RL1159NRFCOyJORJclhe-46">
|
65
|
+
<mxGeometry relative="1" as="geometry"/>
|
66
|
+
</mxCell>
|
67
|
+
<mxCell id="RL1159NRFCOyJORJclhe-49" value="Decode&nbsp;<span style="color: rgb(0, 0, 0);">with</span><div>COBS</div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
|
68
|
+
<mxGeometry x="377.5" y="340" width="85" height="40" as="geometry"/>
|
69
|
+
</mxCell>
|
70
|
+
<mxCell id="RL1159NRFCOyJORJclhe-51" style="edgeStyle=none;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;entryX=0.387;entryY=0.968;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="RL1159NRFCOyJORJclhe-49" target="RL1159NRFCOyJORJclhe-44">
|
71
|
+
<mxGeometry relative="1" as="geometry">
|
72
|
+
<mxPoint x="419" y="320" as="targetPoint"/>
|
73
|
+
</mxGeometry>
|
74
|
+
</mxCell>
|
75
|
+
<mxCell id="RL1159NRFCOyJORJclhe-53" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="RL1159NRFCOyJORJclhe-52" target="RL1159NRFCOyJORJclhe-48">
|
76
|
+
<mxGeometry relative="1" as="geometry"/>
|
77
|
+
</mxCell>
|
78
|
+
<mxCell id="RL1159NRFCOyJORJclhe-52" value="Calculate CRC" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
|
79
|
+
<mxGeometry x="377.5" y="460" width="85" height="40" as="geometry"/>
|
80
|
+
</mxCell>
|
81
|
+
<mxCell id="RL1159NRFCOyJORJclhe-58" value="" style="endArrow=classic;html=1;" edge="1" parent="1">
|
82
|
+
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
83
|
+
<mxPoint x="419.58" y="210" as="sourcePoint"/>
|
84
|
+
<mxPoint x="419.58" y="270" as="targetPoint"/>
|
85
|
+
</mxGeometry>
|
86
|
+
</mxCell>
|
87
|
+
</root>
|
88
|
+
</mxGraphModel>
|
89
|
+
</diagram>
|
90
|
+
<diagram id="spgo_ZM53PilI1epJ_PP" name="Page-2">
|
91
|
+
<mxGraphModel dx="835" dy="711" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
92
|
+
<root>
|
93
|
+
<mxCell id="0"/>
|
94
|
+
<mxCell id="1" parent="0"/>
|
95
|
+
<mxCell id="H-Vw1sji3MmnnZHTfAvp-1" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="H-Vw1sji3MmnnZHTfAvp-2" target="H-Vw1sji3MmnnZHTfAvp-8">
|
96
|
+
<mxGeometry relative="1" as="geometry"/>
|
97
|
+
</mxCell>
|
98
|
+
<mxCell id="H-Vw1sji3MmnnZHTfAvp-2" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
99
|
+
<mxGeometry x="170" y="630" width="100" height="140" as="geometry"/>
|
100
|
+
</mxCell>
|
101
|
+
<mxCell id="H-Vw1sji3MmnnZHTfAvp-3" value="Cobs<br>Encoding" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
102
|
+
<mxGeometry x="180" y="720" width="80" height="40" as="geometry"/>
|
103
|
+
</mxCell>
|
104
|
+
<mxCell id="H-Vw1sji3MmnnZHTfAvp-4" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="H-Vw1sji3MmnnZHTfAvp-5" target="H-Vw1sji3MmnnZHTfAvp-7">
|
105
|
+
<mxGeometry relative="1" as="geometry"/>
|
106
|
+
</mxCell>
|
107
|
+
<mxCell id="H-Vw1sji3MmnnZHTfAvp-5" value="list[DATA]|data" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1">
|
108
|
+
<mxGeometry x="150" y="550" width="140" height="40" as="geometry"/>
|
109
|
+
</mxCell>
|
110
|
+
<mxCell id="H-Vw1sji3MmnnZHTfAvp-6" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="H-Vw1sji3MmnnZHTfAvp-7" target="H-Vw1sji3MmnnZHTfAvp-3">
|
111
|
+
<mxGeometry relative="1" as="geometry"/>
|
112
|
+
</mxCell>
|
113
|
+
<mxCell id="H-Vw1sji3MmnnZHTfAvp-7" value="<div>Add CRC</div>" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
114
|
+
<mxGeometry x="180" y="640" width="80" height="40" as="geometry"/>
|
115
|
+
</mxCell>
|
116
|
+
<mxCell id="H-Vw1sji3MmnnZHTfAvp-8" value="stream" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1">
|
117
|
+
<mxGeometry x="165" y="810" width="110" height="50" as="geometry"/>
|
118
|
+
</mxCell>
|
119
|
+
<mxCell id="H-Vw1sji3MmnnZHTfAvp-9" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="H-Vw1sji3MmnnZHTfAvp-10" target="H-Vw1sji3MmnnZHTfAvp-12">
|
120
|
+
<mxGeometry relative="1" as="geometry"/>
|
121
|
+
</mxCell>
|
122
|
+
<mxCell id="H-Vw1sji3MmnnZHTfAvp-10" value="stream" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1">
|
123
|
+
<mxGeometry x="370" y="550" width="110" height="40" as="geometry"/>
|
124
|
+
</mxCell>
|
125
|
+
<mxCell id="H-Vw1sji3MmnnZHTfAvp-11" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="H-Vw1sji3MmnnZHTfAvp-12" target="H-Vw1sji3MmnnZHTfAvp-15">
|
126
|
+
<mxGeometry relative="1" as="geometry"/>
|
127
|
+
</mxCell>
|
128
|
+
<mxCell id="H-Vw1sji3MmnnZHTfAvp-12" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
129
|
+
<mxGeometry x="372" y="631" width="105" height="130" as="geometry"/>
|
130
|
+
</mxCell>
|
131
|
+
<mxCell id="H-Vw1sji3MmnnZHTfAvp-13" value="Cobs<br>Encoding" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
132
|
+
<mxGeometry x="382" y="641" width="80" height="40" as="geometry"/>
|
133
|
+
</mxCell>
|
134
|
+
<mxCell id="H-Vw1sji3MmnnZHTfAvp-14" value="<div>Add CRC</div>" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
135
|
+
<mxGeometry x="384.5" y="711" width="80" height="40" as="geometry"/>
|
136
|
+
</mxCell>
|
137
|
+
<mxCell id="H-Vw1sji3MmnnZHTfAvp-15" value="list[DATA]" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1">
|
138
|
+
<mxGeometry x="354.5" y="821" width="140" height="40" as="geometry"/>
|
139
|
+
</mxCell>
|
140
|
+
</root>
|
141
|
+
</mxGraphModel>
|
142
|
+
</diagram>
|
143
|
+
</mxfile>
|
@@ -0,0 +1 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1106px" height="1282px" viewBox="-0.5 -0.5 1106 1282" content="<mxfile scale="2" border="0"><diagram id="Die8snK1uMh-dL0AAzdI" name="Page-1">7Vpbc9o4FP41zGwfmrEtS9iPDUna6aRNJpmd3T4qtsCeFRZriwD99ZUtyRekAC3YTNOQmdg6un/nfmAEJvP1xxwvki8sJnTkOfF6BK5GnocAFP9LwkYS3BAgSZnlaaxoDeEx/U4U0VHUZRqTojOQM0Z5uugSI5ZlJOIdGs5ztuoOmzLa3XWBZ8QgPEaYmtR/0pgnkhpAp6F/Iuks0Tu7juqZYz1YEYoEx2zVIoHrEZjkjHH5Nl9PCC3B07jIeTcv9NYHy0nGD5kAQnUOvtGXI7G4q2pmLBOPy4TPqWi54pWsU/6veHcuoGp9a/VclSx2dGOjGxnPN61JZfNbu6+ZVrX0PHm08jwv3k6RCrbMIzXKUwKB8xlRo0BQQytkkrA5EduIMTmhmKfP3eWxEo5ZPa7BT7woCO1wqr2fMV2qRUceouIUl8UCZx2c0f/LksmXEaMsH4EP5XFmT39BcQqxjdM831VI6OHibVY+7/GGMhzr5cXB5A6y12BqzpZZTGIF7CpJOXlc4AqyldDRLo+nKaUTeSwxF0xh+VfegefsP9LqQdWnnMEy3qLLT30OC8OeSc7JukUymaN6vUCpijIWvmquGsWrhyQtpdPjjmEnMNg5eZi46KToxpgE08iKbhSQp+lpUIRoL4p9geibIN5dPpaKnUWsRE04AszxKxZZF5loA9QT3MiA++vft7cnRfcJR0EMbOh6wPdhfBoUkb8fRb8vxYcDuMVfc28AWPybP5B/A6ZFfHNwFqG2cPFga/E+GNLDmc7sd4//gG8qiDeUflicHabRUmxDBFlEDzsE1/1pwSVuDMnYJrghGgOMTiOgYDy+gF0R9SzhA+xJQgMD0usqcKi2F7sLWKt44hXgWueJA+Cq1xhK80HodnT/wvHCPfpfte5JnorLkfw4oxCYRmEop/lw67ow/PpwM7nbfL57+BzRhLz3bZ50mx9Z/KGsVjTsiHGR1DLd4k1Jv8dcoJRVFM9pwjNdofB+AjwTlZZEQosv0rSDwVM73LNUbNz4QrfrCw1JlzxVs9p1ja2FxmjPQlIQjIUqXtbXPoK9+7MehOelFcqeioUMe3oJo2Rq9afFUJ4lhuot47ILADQE4Hx52FHYbudhNmz7ysOs0EJ/WM81QMxqFyFk+iw7IEOFtzuP+ZYT9mfPfEtg2FtOaOfy2HRo56uFHgWuWQsdrhhqx9ZMcd406MQaBC0p67BchgMnXGdzW+GBbks6jrO5rdBQuisi6wrHReaO1ED9sOuhrFy8oISSHKfPmiRTh3p0q2eHxv4+ZQ9g+zaqp7KHXTVdA8dfUU1np2oWQiG4zucjiosijTT5JqX10kbSLyiqf7ukEoy7JZUQBcOVVI5U/mOrL/a833fDrmh5w+b9EPwZRh56h/J5qJ9e7DzmK6/H+5avRoc1oLYI9uVqZmP9WlgeKp3nqk0K03Kh76lLIe4WoIeWJ21rjU9lqUSz+QGZHN78DA9c/wA=</diagram><diagram id="spgo_ZM53PilI1epJ_PP" name="Page-2">5VhRd5owFP41PLaHECLs0aKbL32ZPdu6t9REyBaIJ0TR/foFSRQKte5MpbX2nJr73VyTfPnuDcGBUbr+IvEiuReEcsdzydqBI8fzQoj0/xLYVEAAQAXEkpEKqgFT9oca0DXokhGaNzoqIbhiiyY4E1lGZ6qBYSlF0ew2F7w56gLHtAVMZ5i30e+MqMQsC7l7fEJZnNiRgWs8KbadDZAnmIiiBsGxAyMphKpa6TqivOTO8lLFfX7Bu5uYpJk6JmBy860A+S8G79Ms+zl5mA9XixvzK7na2AVTotdvzExk+usuUSnXFtBNumbqh267t8hYjzXPqNx11xoba2RKbmpBpflY9+3DtpaNq6ZWzufFFdvpi6Wc0QPL9IxysIypOtAv3O2L1jMVKdXz0XGScqzYqjkPbJQV7/rtydcNw/8/7IWZ5ArzpRmptTlSLDNCiSGoSJii0wXeLr3Q6dfcK/NzVCq6Psxge8U2IDDiNdk7gMYu9rmwU3xSzwPfPRNLsMVSJJ5yxxtwPfTdk9StuGyNs5kgLIv75zBschh4bQ7DDgrPxqD/MXIeHZnzQZ85j1pq5ixXDrobDR+GDho5QUSwwv8n4jnjPBJcyG0snKPyT+O5kuI3rXkG208ZITJVw6vPidIBNdMBoY6S4l8yHwYXyIcT6jo4UtewT10HHWdZVaEJW9kSPSRE94m+Rtanh6q531zlHvg9V+6wxapOYYrTayoPA9TgPAQd5QF0kI7ORfqnj3FcWk5frSvA67Ow2Glecw7A4IgjsisHzlZ4wCXuiacU87EXPoB6FfMbvPLBwGseehC0xeeitvgAPJv63t2dD4bPSPTbJF70yQH4HUp7dw9kMPRvm48Hu9eJvRH76g3uis4l9Jz+0OsoDie6vGlz/3J066u9YYbjvw==</diagram></mxfile>"><defs/><g><g><path d="M 422 320 L 422 347.26" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 422 357.76 L 415 343.76 L 422 347.26 L 429 343.76 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><rect x="142" y="240" width="560" height="80" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g transform="translate(-0.5 -0.5)scale(2)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 140px; margin-left: 72px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: light-dark(rgb(51, 51, 51), rgb(193, 193, 193));">Payload</span></div></div></div></foreignObject><text x="211" y="144" fill="#333333" font-family=""Helvetica"" font-size="12px" text-anchor="middle">Payload</text></switch></g></g><g><rect x="702" y="240" width="160" height="80" fill="#dae8fc" stroke="#6c8ebf" stroke-width="2" pointer-events="all" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/></g><g><g transform="translate(-0.5 -0.5)scale(2)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 140px; margin-left: 352px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">CRC16</div></div></div></foreignObject><text x="391" y="144" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">CRC16</text></switch></g></g><g><rect x="142" y="480" width="720" height="80" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g transform="translate(-0.5 -0.5)scale(2)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 358px; height: 1px; padding-top: 260px; margin-left: 72px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">COBS encoded data</div></div></div></foreignObject><text x="251" y="264" fill="#333333" font-family=""Helvetica"" font-size="12px" text-anchor="middle">COBS encoded data</text></switch></g></g><g><rect x="862" y="480" width="80" height="80" fill="#bac8d3" stroke="#23445d" stroke-width="2" pointer-events="all" style="fill: light-dark(rgb(186, 200, 211), rgb(57, 69, 78)); stroke: light-dark(rgb(35, 68, 93), rgb(160, 188, 210));"/></g><g><g transform="translate(-0.5 -0.5)scale(2)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 260px; margin-left: 432px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">NULL</div></div></div></foreignObject><text x="451" y="264" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">NULL</text></switch></g></g><g><path d="M 422 80 L 422 107.26" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 422 117.76 L 415 103.76 L 422 107.26 L 429 103.76 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><rect x="142" y="0" width="560" height="80" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g transform="translate(-0.5 -0.5)scale(2)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 20px; margin-left: 72px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: light-dark(rgb(51, 51, 51), rgb(193, 193, 193));">Payload</span></div></div></div></foreignObject><text x="211" y="24" fill="#333333" font-family=""Helvetica"" font-size="12px" text-anchor="middle">Payload</text></switch></g></g><g><path d="M 422 200 L 422 227.26" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 422 237.76 L 415 223.76 L 422 227.26 L 429 223.76 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><rect x="337" y="120" width="170" height="80" rx="12" ry="12" fill="#e1d5e7" stroke="#9673a6" stroke-width="2" pointer-events="all" style="fill: light-dark(rgb(225, 213, 231), rgb(57, 47, 63)); stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));"/></g><g><g transform="translate(-0.5 -0.5)scale(2)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 83px; height: 1px; padding-top: 80px; margin-left: 170px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Calculate CRC</div></div></div></foreignObject><text x="211" y="84" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">Calculate CRC</text></switch></g></g><g><rect x="337" y="360" width="170" height="80" rx="12" ry="12" fill="#e1d5e7" stroke="#9673a6" stroke-width="2" pointer-events="all" style="fill: light-dark(rgb(225, 213, 231), rgb(57, 47, 63)); stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));"/></g><g><g transform="translate(-0.5 -0.5)scale(2)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 83px; height: 1px; padding-top: 200px; margin-left: 170px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Encode with COBS</div></div></div></foreignObject><text x="211" y="204" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">Encode with CO...</text></switch></g></g><g><path d="M 422 440 L 423.06 469.59" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 423.44 480.09 L 415.94 466.35 L 423.06 469.59 L 429.93 465.84 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><path d="M 2 640 L 1102 640" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="4 12" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><rect x="142" y="720" width="720" height="80" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g transform="translate(-0.5 -0.5)scale(2)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 358px; height: 1px; padding-top: 380px; margin-left: 72px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">COBS encoded <span style="color: light-dark(rgb(51, 51, 51), rgb(193, 193, 193));">data</span></div></div></div></foreignObject><text x="251" y="384" fill="#333333" font-family=""Helvetica"" font-size="12px" text-anchor="middle">COBS encoded data</text></switch></g></g><g><rect x="862" y="720" width="80" height="80" fill="#bac8d3" stroke="#23445d" stroke-width="2" pointer-events="all" style="fill: light-dark(rgb(186, 200, 211), rgb(57, 69, 78)); stroke: light-dark(rgb(35, 68, 93), rgb(160, 188, 210));"/></g><g><g transform="translate(-0.5 -0.5)scale(2)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 380px; margin-left: 432px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">NULL</div></div></div></foreignObject><text x="451" y="384" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">NULL</text></switch></g></g><g><path d="M 422 1040 L 422 1067.26" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 422 1077.76 L 415 1063.76 L 422 1067.26 L 429 1063.76 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><rect x="142" y="960" width="560" height="80" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g transform="translate(-0.5 -0.5)scale(2)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 500px; margin-left: 72px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: light-dark(rgb(51, 51, 51), rgb(193, 193, 193));">Payload</span></div></div></div></foreignObject><text x="211" y="504" fill="#333333" font-family=""Helvetica"" font-size="12px" text-anchor="middle">Payload</text></switch></g></g><g><rect x="702" y="960" width="160" height="80" fill="#dae8fc" stroke="#6c8ebf" stroke-width="2" pointer-events="all" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/></g><g><g transform="translate(-0.5 -0.5)scale(2)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 500px; margin-left: 352px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">CRC16</div></div></div></foreignObject><text x="391" y="504" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">CRC16</text></switch></g></g><g><rect x="142" y="1200" width="560" height="80" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g transform="translate(-0.5 -0.5)scale(2)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 620px; margin-left: 72px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: light-dark(rgb(51, 51, 51), rgb(193, 193, 193));">Payload</span></div></div></div></foreignObject><text x="211" y="624" fill="#333333" font-family=""Helvetica"" font-size="12px" text-anchor="middle">Payload</text></switch></g></g><g><path d="M 422 920 L 422 947.26" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 422 957.76 L 415 943.76 L 422 947.26 L 429 943.76 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><rect x="337" y="840" width="170" height="80" rx="12" ry="12" fill="#e1d5e7" stroke="#9673a6" stroke-width="2" pointer-events="all" style="fill: light-dark(rgb(225, 213, 231), rgb(57, 47, 63)); stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));"/></g><g><g transform="translate(-0.5 -0.5)scale(2)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 83px; height: 1px; padding-top: 440px; margin-left: 170px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Decode <span style="color: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));">with</span><div>COBS</div></div></div></div></foreignObject><text x="211" y="444" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">Decode with...</text></switch></g></g><g><path d="M 421.59 827.27 L 420.64 797.44" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 421.93 837.77 L 414.49 824 L 421.59 827.27 L 428.48 823.55 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><path d="M 422 1160 L 422 1187.26" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 422 1197.76 L 415 1183.76 L 422 1187.26 L 429 1183.76 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><rect x="337" y="1080" width="170" height="80" rx="12" ry="12" fill="#e1d5e7" stroke="#9673a6" stroke-width="2" pointer-events="all" style="fill: light-dark(rgb(225, 213, 231), rgb(57, 47, 63)); stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));"/></g><g><g transform="translate(-0.5 -0.5)scale(2)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 83px; height: 1px; padding-top: 560px; margin-left: 170px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Helvetica"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Calculate CRC</div></div></div></foreignObject><text x="211" y="564" fill="light-dark(#000000, #ffffff)" font-family=""Helvetica"" font-size="12px" text-anchor="middle">Calculate CRC</text></switch></g></g><g><path d="M 421.16 580 L 421.16 687.26" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 421.16 697.76 L 414.16 683.76 L 421.16 687.26 L 428.16 683.76 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[project]
|
2
2
|
name = "burst-link-protocol"
|
3
|
-
version = "1.0.
|
3
|
+
version = "1.0.2" # Choose one version reference here
|
4
4
|
description = "Binary Utility for Reliable Stream Transfer (BURST) is a library for encoding and decoding binary data streams into and from a byte stream."
|
5
5
|
requires-python = ">=3.10,<4.0"
|
6
6
|
authors = [
|
@@ -1,69 +0,0 @@
|
|
1
|
-
# BURST interface
|
2
|
-
Binary Utility for Reliable Stream Transfer (BURST) is a library for encoding and decoding binary data streams, a packet format.
|
3
|
-
It combines a 16 bit checksum and cobs encoding to convert packets into a format that can be sent over a stream.
|
4
|
-
|
5
|
-
This projects is written so it can be used both in python, c and c++ based project
|
6
|
-
|
7
|
-
# Installation instuctions
|
8
|
-
|
9
|
-
## As an user
|
10
|
-
|
11
|
-
Simple installation
|
12
|
-
```sh
|
13
|
-
pip install -e .
|
14
|
-
```
|
15
|
-
|
16
|
-
## As a developer
|
17
|
-
|
18
|
-
Fast build
|
19
|
-
```sh
|
20
|
-
pip install --no-build-isolation -ve .
|
21
|
-
```
|
22
|
-
|
23
|
-
Auto rebuild on run
|
24
|
-
```sh
|
25
|
-
pip install --no-build-isolation -Ceditable.rebuild=true -ve .
|
26
|
-
```
|
27
|
-
|
28
|
-
|
29
|
-
### Python Stub files generation
|
30
|
-
|
31
|
-
They are generated automatically buy can also be generated
|
32
|
-
|
33
|
-
```
|
34
|
-
python -m nanobind.stubgen -m nanobind_example_ext
|
35
|
-
```
|
36
|
-
|
37
|
-
# Publishing instructions
|
38
|
-
|
39
|
-
```
|
40
|
-
|
41
|
-
```
|
42
|
-
|
43
|
-
# Test
|
44
|
-
|
45
|
-
```sh
|
46
|
-
pytest
|
47
|
-
```
|
48
|
-
|
49
|
-
# BURST protocol
|
50
|
-
TODO
|
51
|
-
* STAGE 1
|
52
|
-
* Convert cpp to c files [OK]
|
53
|
-
* Formalise naming [OK]
|
54
|
-
* Add c encode functions [OK]
|
55
|
-
* Test c encode functions [OK]
|
56
|
-
* Update README
|
57
|
-
* Improve poetry.toml [OK]
|
58
|
-
|
59
|
-
|
60
|
-
* STAGE 2
|
61
|
-
* Add CI/CD on github to compile x86
|
62
|
-
* Fix dependencies once compilation succeeds
|
63
|
-
* Publish on pypi
|
64
|
-
* STAGE 3
|
65
|
-
* Add a way to get C test coverage
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|