cosmos-ccsds_transfer_frames 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +40 -3
- data/img/frames_before_packet_extraction_and_prefixing.svg +516 -0
- data/img/prefixed_packets_after_extraction_and_prefixing.svg +420 -0
- data/lib/cosmos/ccsds_transfer_frames/ccsds_transfer_frame_protocol.rb +53 -63
- data/lib/cosmos/ccsds_transfer_frames/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3128ece31262853c7294711004de02f80b4599c0
|
4
|
+
data.tar.gz: a9d2186b8fe665575128e8603d26f988a9507520
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40efc045e911d709893cb871d188c12ea174c4ca0e5d67a1058195f7c81ef3ad4f1cdf26cc335380cf88ebd1e5f3d4ce643b17b5db043749d90beae45ce1e3ea
|
7
|
+
data.tar.gz: 42829c6c87adb5b48700a697fa908e130d458bd0d029313b332a8022a09a9cdefd83e87666ad7a05c3a8150943fa41f4fb5fe188411823a74694f7b201ee4d30
|
data/README.md
CHANGED
@@ -30,25 +30,62 @@ In order to use this protocol in your COSMOS target first make sure to add the f
|
|
30
30
|
REQUIRE cosmos/ccsds_transfer_frames
|
31
31
|
```
|
32
32
|
|
33
|
-
Then add the protocol in the command and telemetry server configuration in an interface definition as usual. The full explicit module namespace is necessary
|
33
|
+
Then add the protocol in the command and telemetry server configuration in an interface definition as usual. The full explicit module namespace `Cosmos::CcsdsTransferFrames::CcsdsTransferFrameProtocol` is necessary.
|
34
|
+
|
35
|
+
For example:
|
34
36
|
|
35
37
|
```
|
36
38
|
INTERFACE INTERFACE_NAME tcpip_client_interface.rb localhost 12345 12345 10.0 nil
|
37
|
-
PROTOCOL Cosmos::CcsdsTransferFrames::CcsdsTransferFrameProtocol 1115 0 true true
|
39
|
+
PROTOCOL READ Cosmos::CcsdsTransferFrames::CcsdsTransferFrameProtocol 1115 0 true true
|
38
40
|
TARGET TARGET_NAME
|
39
41
|
```
|
40
42
|
|
41
|
-
|
43
|
+
would set up the protocol to expect transfer frames with:
|
42
44
|
|
43
45
|
* A total size of 1115 bytes.
|
44
46
|
* No secondary header.
|
45
47
|
* Operational control field.
|
46
48
|
* Frame error control field.
|
49
|
+
|
50
|
+
and to perform:
|
51
|
+
|
47
52
|
* No prefixing of packets (default).
|
48
53
|
* Discarding of idle packets (default).
|
49
54
|
|
55
|
+
Another example:
|
56
|
+
|
57
|
+
```
|
58
|
+
INTERFACE INTERFACE_NAME tcpip_client_interface.rb localhost 12345 12345 10.0 nil
|
59
|
+
PROTOCOL READ Cosmos::CcsdsTransferFrames::CcsdsTransferFrameProtocol 1115 64 false false true true
|
60
|
+
TARGET TARGET_NAME
|
61
|
+
```
|
62
|
+
|
63
|
+
would set up the protocol to expect transfer frames with:
|
64
|
+
|
65
|
+
* A total size of 1115 bytes.
|
66
|
+
* A secondary header with a size of 64 bytes.
|
67
|
+
* No operational control field.
|
68
|
+
* No frame error control field.
|
69
|
+
|
70
|
+
and to perform:
|
71
|
+
|
72
|
+
* Prefixing of packets.
|
73
|
+
* No discarding of idle packets.
|
74
|
+
|
50
75
|
For detailed information about the available configuration parameters for the protocol, please consult the yard inline source code documentation in [ccsds_transfer_frame_protocol.rb](lib/cosmos/ccsds_transfer_frames/ccsds_transfer_frame_protocol.rb) or the generated documentation for the currently published gem at https://www.rubydoc.info/gems/cosmos-ccsds_transfer_frames/Cosmos/CcsdsTransferFrames/CcsdsTransferFrameProtocol
|
51
76
|
|
77
|
+
### Packet prefixing
|
78
|
+
|
79
|
+
Packet prefixing is a non-standard feature which prefixes each packet with the primary and secondary transfer frame headers from the frame in which the first byte of the packet was seen.
|
80
|
+
|
81
|
+
For example, if a set of 4 frames containing 4 packets as illustrated below is received:
|
82
|
+
|
83
|
+
![Frames before packet extraction and prefixing.](img/frames_before_packet_extraction_and_prefixing.svg)
|
84
|
+
|
85
|
+
the resulting prefixed packets would be:
|
86
|
+
|
87
|
+
![Prefixed packets after extraction and prefixing.](img/prefixed_packets_after_extraction_and_prefixing.svg)
|
88
|
+
|
52
89
|
## Development
|
53
90
|
|
54
91
|
[![Build Status](https://travis-ci.org/ienorand/cosmos-ccsds_transfer_frames.svg?branch=master)](https://travis-ci.org/ienorand/cosmos-ccsds_transfer_frames)
|
@@ -0,0 +1,516 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
3
|
+
|
4
|
+
<svg
|
5
|
+
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
|
6
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
7
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
8
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
9
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
10
|
+
xmlns="http://www.w3.org/2000/svg"
|
11
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
12
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
13
|
+
width="138.28403mm"
|
14
|
+
height="109.60315mm"
|
15
|
+
viewBox="0 0 138.28402 109.60315"
|
16
|
+
version="1.1"
|
17
|
+
id="svg8"
|
18
|
+
inkscape:version="0.92.1 r15371"
|
19
|
+
sodipodi:docname="frames_before_packet_extraction_and_prefixing.svg">
|
20
|
+
<defs
|
21
|
+
id="defs2">
|
22
|
+
<linearGradient
|
23
|
+
id="linearGradient4798"
|
24
|
+
osb:paint="solid">
|
25
|
+
<stop
|
26
|
+
style="stop-color:#174251;stop-opacity:1;"
|
27
|
+
offset="0"
|
28
|
+
id="stop4796" />
|
29
|
+
</linearGradient>
|
30
|
+
<marker
|
31
|
+
inkscape:stockid="DotL"
|
32
|
+
orient="auto"
|
33
|
+
refY="0"
|
34
|
+
refX="0"
|
35
|
+
id="DotL"
|
36
|
+
style="overflow:visible"
|
37
|
+
inkscape:isstock="true">
|
38
|
+
<path
|
39
|
+
id="path4562"
|
40
|
+
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
|
41
|
+
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt"
|
42
|
+
transform="matrix(0.8,0,0,0.8,5.92,0.8)"
|
43
|
+
inkscape:connector-curvature="0" />
|
44
|
+
</marker>
|
45
|
+
<linearGradient
|
46
|
+
id="linearGradient4497"
|
47
|
+
osb:paint="solid">
|
48
|
+
<stop
|
49
|
+
style="stop-color:#584800;stop-opacity:1;"
|
50
|
+
offset="0"
|
51
|
+
id="stop4495" />
|
52
|
+
</linearGradient>
|
53
|
+
<linearGradient
|
54
|
+
id="linearGradient4491"
|
55
|
+
osb:paint="solid">
|
56
|
+
<stop
|
57
|
+
style="stop-color:#584800;stop-opacity:1;"
|
58
|
+
offset="0"
|
59
|
+
id="stop4489" />
|
60
|
+
</linearGradient>
|
61
|
+
</defs>
|
62
|
+
<sodipodi:namedview
|
63
|
+
id="base"
|
64
|
+
pagecolor="#ffffff"
|
65
|
+
bordercolor="#666666"
|
66
|
+
borderopacity="1.0"
|
67
|
+
inkscape:pageopacity="0.0"
|
68
|
+
inkscape:pageshadow="2"
|
69
|
+
inkscape:zoom="0.70710678"
|
70
|
+
inkscape:cx="143.62988"
|
71
|
+
inkscape:cy="144.52486"
|
72
|
+
inkscape:document-units="mm"
|
73
|
+
inkscape:current-layer="layer1"
|
74
|
+
showgrid="false"
|
75
|
+
showguides="true"
|
76
|
+
inkscape:guide-bbox="true"
|
77
|
+
inkscape:snap-bbox="true"
|
78
|
+
inkscape:snap-bbox-midpoints="true"
|
79
|
+
inkscape:bbox-nodes="true"
|
80
|
+
inkscape:snap-bbox-edge-midpoints="true"
|
81
|
+
inkscape:window-width="1280"
|
82
|
+
inkscape:window-height="987"
|
83
|
+
inkscape:window-x="0"
|
84
|
+
inkscape:window-y="56"
|
85
|
+
inkscape:window-maximized="1"
|
86
|
+
fit-margin-top="5"
|
87
|
+
fit-margin-left="5"
|
88
|
+
fit-margin-bottom="5"
|
89
|
+
fit-margin-right="5"
|
90
|
+
scale-x="1">
|
91
|
+
<sodipodi:guide
|
92
|
+
position="175.53835,93.9716"
|
93
|
+
orientation="0,1"
|
94
|
+
id="guide344"
|
95
|
+
inkscape:locked="false" />
|
96
|
+
<sodipodi:guide
|
97
|
+
position="175.53836,67.858398"
|
98
|
+
orientation="0,1"
|
99
|
+
id="guide346"
|
100
|
+
inkscape:locked="false" />
|
101
|
+
<sodipodi:guide
|
102
|
+
position="175.53837,41.745189"
|
103
|
+
orientation="0,1"
|
104
|
+
id="guide348"
|
105
|
+
inkscape:locked="false" />
|
106
|
+
<sodipodi:guide
|
107
|
+
position="175.53837,15.631988"
|
108
|
+
orientation="0,1"
|
109
|
+
id="guide350"
|
110
|
+
inkscape:locked="false" />
|
111
|
+
<sodipodi:guide
|
112
|
+
position="161.83694,93.971598"
|
113
|
+
orientation="1,0"
|
114
|
+
id="guide352"
|
115
|
+
inkscape:locked="false" />
|
116
|
+
<sodipodi:guide
|
117
|
+
position="69.142005,104.60315"
|
118
|
+
orientation="1,0"
|
119
|
+
id="guide129"
|
120
|
+
inkscape:locked="false" />
|
121
|
+
<sodipodi:guide
|
122
|
+
position="69.142015,100.2981"
|
123
|
+
orientation="0,1"
|
124
|
+
id="guide131"
|
125
|
+
inkscape:locked="false" />
|
126
|
+
<sodipodi:guide
|
127
|
+
position="69.142007,74.184865"
|
128
|
+
orientation="0,1"
|
129
|
+
id="guide133"
|
130
|
+
inkscape:locked="false" />
|
131
|
+
<sodipodi:guide
|
132
|
+
position="69.142015,48.071702"
|
133
|
+
orientation="0,1"
|
134
|
+
id="guide135"
|
135
|
+
inkscape:locked="false" />
|
136
|
+
<sodipodi:guide
|
137
|
+
position="69.141996,21.958501"
|
138
|
+
orientation="0,1"
|
139
|
+
id="guide137"
|
140
|
+
inkscape:locked="false" />
|
141
|
+
</sodipodi:namedview>
|
142
|
+
<metadata
|
143
|
+
id="metadata5">
|
144
|
+
<rdf:RDF>
|
145
|
+
<cc:Work
|
146
|
+
rdf:about="">
|
147
|
+
<dc:format>image/svg+xml</dc:format>
|
148
|
+
<dc:type
|
149
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
150
|
+
<dc:title />
|
151
|
+
</cc:Work>
|
152
|
+
</rdf:RDF>
|
153
|
+
</metadata>
|
154
|
+
<g
|
155
|
+
inkscape:label="Layer 1"
|
156
|
+
inkscape:groupmode="layer"
|
157
|
+
id="layer1"
|
158
|
+
transform="translate(-44.7868,-76.088257)">
|
159
|
+
<rect
|
160
|
+
id="rect3680"
|
161
|
+
width="127.784"
|
162
|
+
height="20.763075"
|
163
|
+
x="50.036808"
|
164
|
+
y="81.338257"
|
165
|
+
style="fill:#ffe680;stroke:#584800;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
166
|
+
rx="1"
|
167
|
+
ry="1" />
|
168
|
+
<text
|
169
|
+
xml:space="preserve"
|
170
|
+
style="font-style:normal;font-weight:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
171
|
+
x="114.26051"
|
172
|
+
y="87.333961"
|
173
|
+
id="text4804"
|
174
|
+
transform="scale(0.99808408,1.0019196)"><tspan
|
175
|
+
sodipodi:role="line"
|
176
|
+
id="tspan4802"
|
177
|
+
x="114.26051"
|
178
|
+
y="87.333961"
|
179
|
+
style="font-size:5.64444447px;text-align:center;text-anchor:middle;stroke-width:0.26458332">transfer frame 0</tspan></text>
|
180
|
+
<g
|
181
|
+
style="stroke-width:0.49843231"
|
182
|
+
id="g5321"
|
183
|
+
transform="matrix(2.0024466,0,0,2.0101417,-50.159212,-182.27093)">
|
184
|
+
<rect
|
185
|
+
rx="0.49938911"
|
186
|
+
ry="0.49747732"
|
187
|
+
y="135.76961"
|
188
|
+
x="50.036804"
|
189
|
+
height="5.6991529"
|
190
|
+
width="10.716301"
|
191
|
+
id="rect3682"
|
192
|
+
style="opacity:0.75;fill:#de8787;fill-opacity:1;stroke:#561818;stroke-width:0.24921615;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
193
|
+
<text
|
194
|
+
id="text4810"
|
195
|
+
y="138.17433"
|
196
|
+
x="55.373425"
|
197
|
+
style="font-style:normal;font-weight:normal;font-size:1.76388884px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.13187687"
|
198
|
+
xml:space="preserve"><tspan
|
199
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.13187687"
|
200
|
+
y="138.17433"
|
201
|
+
x="55.373425"
|
202
|
+
id="tspan4808"
|
203
|
+
sodipodi:role="line">frame 0</tspan><tspan
|
204
|
+
id="tspan4850"
|
205
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.13187687"
|
206
|
+
y="140.3792"
|
207
|
+
x="55.373425"
|
208
|
+
sodipodi:role="line">headers</tspan></text>
|
209
|
+
</g>
|
210
|
+
<rect
|
211
|
+
style="opacity:0.75;fill:#87c8de;fill-opacity:1;stroke:#174251;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
212
|
+
id="rect3682-3"
|
213
|
+
width="26.579962"
|
214
|
+
height="11.456124"
|
215
|
+
x="71.495628"
|
216
|
+
y="90.645218"
|
217
|
+
ry="1"
|
218
|
+
rx="1" />
|
219
|
+
<text
|
220
|
+
xml:space="preserve"
|
221
|
+
style="font-style:normal;font-weight:normal;font-size:3.53887343px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
222
|
+
x="84.626961"
|
223
|
+
y="97.164932"
|
224
|
+
id="text4810-6"
|
225
|
+
transform="scale(0.99808409,1.0019196)"><tspan
|
226
|
+
sodipodi:role="line"
|
227
|
+
x="84.626961"
|
228
|
+
y="97.164932"
|
229
|
+
style="font-size:3.53887343px;text-align:center;text-anchor:middle;stroke-width:0.26458332"
|
230
|
+
id="tspan4850-5">packet 0</tspan></text>
|
231
|
+
<rect
|
232
|
+
style="opacity:0.75;fill:#87c8de;fill-opacity:1;stroke:#174251;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
233
|
+
id="rect3682-3-3"
|
234
|
+
width="79.745239"
|
235
|
+
height="11.456124"
|
236
|
+
x="98.075584"
|
237
|
+
y="90.645218"
|
238
|
+
ry="1"
|
239
|
+
rx="1" />
|
240
|
+
<text
|
241
|
+
xml:space="preserve"
|
242
|
+
style="font-style:normal;font-weight:normal;font-size:3.53887343px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
243
|
+
x="138.21646"
|
244
|
+
y="97.164932"
|
245
|
+
id="text4810-6-6"
|
246
|
+
transform="scale(0.99808409,1.0019196)"><tspan
|
247
|
+
sodipodi:role="line"
|
248
|
+
x="138.21646"
|
249
|
+
y="97.164932"
|
250
|
+
style="font-size:3.53887343px;text-align:center;text-anchor:middle;stroke-width:0.26458332"
|
251
|
+
id="tspan4923">packet 1</tspan></text>
|
252
|
+
<rect
|
253
|
+
id="rect3680-5"
|
254
|
+
width="127.784"
|
255
|
+
height="20.763075"
|
256
|
+
x="50.036808"
|
257
|
+
y="107.45146"
|
258
|
+
style="fill:#ffe680;stroke:#584800;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
259
|
+
rx="1"
|
260
|
+
ry="1" />
|
261
|
+
<text
|
262
|
+
xml:space="preserve"
|
263
|
+
style="font-style:normal;font-weight:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
264
|
+
x="114.33354"
|
265
|
+
y="113.39716"
|
266
|
+
id="text4804-9"
|
267
|
+
transform="scale(0.99808408,1.0019196)"><tspan
|
268
|
+
sodipodi:role="line"
|
269
|
+
id="tspan4802-1"
|
270
|
+
x="114.33354"
|
271
|
+
y="113.39716"
|
272
|
+
style="font-size:5.64444447px;text-align:center;text-anchor:middle;stroke-width:0.26458332">transfer frame 1</tspan></text>
|
273
|
+
<rect
|
274
|
+
style="opacity:0.75;fill:#87c8de;fill-opacity:1;stroke:#174251;stroke-width:0.49999997;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
275
|
+
id="rect3682-3-3-2"
|
276
|
+
width="61.528435"
|
277
|
+
height="11.456124"
|
278
|
+
x="98.445023"
|
279
|
+
y="116.75842"
|
280
|
+
ry="1"
|
281
|
+
rx="0.99999982" />
|
282
|
+
<text
|
283
|
+
xml:space="preserve"
|
284
|
+
style="font-style:normal;font-weight:normal;font-size:3.53887343px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
285
|
+
x="129.47456"
|
286
|
+
y="123.2281"
|
287
|
+
id="text4810-6-6-3"
|
288
|
+
transform="scale(0.99808409,1.0019196)"><tspan
|
289
|
+
sodipodi:role="line"
|
290
|
+
x="129.47456"
|
291
|
+
y="123.2281"
|
292
|
+
style="font-size:3.53887343px;text-align:center;text-anchor:middle;stroke-width:0.26458332"
|
293
|
+
id="tspan4923-6">packet 2</tspan></text>
|
294
|
+
<rect
|
295
|
+
style="opacity:0.75;fill:#87c8de;fill-opacity:1;stroke:#174251;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
296
|
+
id="rect3682-3-3-2-0"
|
297
|
+
width="26.949369"
|
298
|
+
height="11.456124"
|
299
|
+
x="71.495644"
|
300
|
+
y="116.75842"
|
301
|
+
ry="1"
|
302
|
+
rx="0.99999994" />
|
303
|
+
<text
|
304
|
+
xml:space="preserve"
|
305
|
+
style="font-style:normal;font-weight:normal;font-size:3.53887343px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
306
|
+
x="85.187874"
|
307
|
+
y="121.35933"
|
308
|
+
id="text4810-6-6-3-2"
|
309
|
+
transform="scale(0.99808409,1.0019196)"><tspan
|
310
|
+
sodipodi:role="line"
|
311
|
+
x="85.187874"
|
312
|
+
y="121.35933"
|
313
|
+
style="font-size:3.53887343px;text-align:center;text-anchor:middle;stroke-width:0.26458332"
|
314
|
+
id="tspan4923-6-3">packet 1</tspan><tspan
|
315
|
+
sodipodi:role="line"
|
316
|
+
x="85.187874"
|
317
|
+
y="125.78292"
|
318
|
+
style="font-size:3.53887343px;text-align:center;text-anchor:middle;stroke-width:0.26458332"
|
319
|
+
id="tspan5125">continuation</tspan></text>
|
320
|
+
<rect
|
321
|
+
style="opacity:0.75;fill:#87c8de;fill-opacity:1;stroke:#174251;stroke-width:0.49999997;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
322
|
+
id="rect3682-3-3-2-7"
|
323
|
+
width="17.847363"
|
324
|
+
height="11.456124"
|
325
|
+
x="159.97345"
|
326
|
+
y="116.75842"
|
327
|
+
ry="1"
|
328
|
+
rx="0.99999988" />
|
329
|
+
<text
|
330
|
+
xml:space="preserve"
|
331
|
+
style="font-style:normal;font-weight:normal;font-size:3.53887343px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
332
|
+
x="169.20319"
|
333
|
+
y="123.2281"
|
334
|
+
id="text4810-6-6-3-5"
|
335
|
+
transform="scale(0.99808409,1.0019196)"><tspan
|
336
|
+
sodipodi:role="line"
|
337
|
+
x="169.20319"
|
338
|
+
y="123.2281"
|
339
|
+
style="font-size:3.53887343px;text-align:center;text-anchor:middle;stroke-width:0.26458332"
|
340
|
+
id="tspan4923-6-9">packet 3</tspan></text>
|
341
|
+
<g
|
342
|
+
style="stroke-width:0.49843231"
|
343
|
+
transform="matrix(2.0024466,0,0,2.0101417,-50.1592,-156.15772)"
|
344
|
+
id="g5321-3">
|
345
|
+
<rect
|
346
|
+
rx="0.49938911"
|
347
|
+
ry="0.49747732"
|
348
|
+
y="135.76961"
|
349
|
+
x="50.036804"
|
350
|
+
height="5.6991529"
|
351
|
+
width="10.716301"
|
352
|
+
id="rect3682-6"
|
353
|
+
style="opacity:0.75;fill:#de8787;fill-opacity:1;stroke:#561818;stroke-width:0.24921615;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
354
|
+
<text
|
355
|
+
id="text4810-1"
|
356
|
+
y="138.17433"
|
357
|
+
x="55.373425"
|
358
|
+
style="font-style:normal;font-weight:normal;font-size:1.76388884px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.13187687"
|
359
|
+
xml:space="preserve"><tspan
|
360
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.13187687"
|
361
|
+
y="138.17433"
|
362
|
+
x="55.373425"
|
363
|
+
id="tspan4808-0"
|
364
|
+
sodipodi:role="line">frame 1</tspan><tspan
|
365
|
+
id="tspan4850-6"
|
366
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.13187687"
|
367
|
+
y="140.3792"
|
368
|
+
x="55.373425"
|
369
|
+
sodipodi:role="line">headers</tspan></text>
|
370
|
+
</g>
|
371
|
+
<rect
|
372
|
+
id="rect3680-5-7"
|
373
|
+
width="127.784"
|
374
|
+
height="20.763075"
|
375
|
+
x="50.036816"
|
376
|
+
y="133.56465"
|
377
|
+
style="fill:#ffe680;stroke:#584800;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
378
|
+
rx="1"
|
379
|
+
ry="1" />
|
380
|
+
<text
|
381
|
+
xml:space="preserve"
|
382
|
+
style="font-style:normal;font-weight:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
383
|
+
x="114.3556"
|
384
|
+
y="139.4603"
|
385
|
+
id="text4804-9-0"
|
386
|
+
transform="scale(0.99808408,1.0019196)"><tspan
|
387
|
+
sodipodi:role="line"
|
388
|
+
id="tspan4802-1-9"
|
389
|
+
x="114.3556"
|
390
|
+
y="139.4603"
|
391
|
+
style="font-size:5.64444447px;text-align:center;text-anchor:middle;stroke-width:0.26458332">transfer frame 2</tspan></text>
|
392
|
+
<rect
|
393
|
+
style="opacity:0.75;fill:#87c8de;fill-opacity:1;stroke:#174251;stroke-width:0.49999997;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
394
|
+
id="rect3682-3-3-2-3"
|
395
|
+
width="106.32517"
|
396
|
+
height="11.456124"
|
397
|
+
x="71.495621"
|
398
|
+
y="142.87163"
|
399
|
+
ry="1"
|
400
|
+
rx="0.99999982" />
|
401
|
+
<text
|
402
|
+
xml:space="preserve"
|
403
|
+
style="font-style:normal;font-weight:normal;font-size:3.53887343px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
404
|
+
x="124.87937"
|
405
|
+
y="149.29128"
|
406
|
+
id="text4810-6-6-3-5-4"
|
407
|
+
transform="scale(0.99808409,1.0019196)"><tspan
|
408
|
+
sodipodi:role="line"
|
409
|
+
x="124.87937"
|
410
|
+
y="149.29128"
|
411
|
+
style="font-size:3.53887343px;text-align:center;text-anchor:middle;stroke-width:0.26458332"
|
412
|
+
id="tspan4923-6-9-7">packet 3 continuation</tspan></text>
|
413
|
+
<g
|
414
|
+
style="stroke-width:0.49843231"
|
415
|
+
transform="matrix(2.0024466,0,0,2.0101417,-50.159232,-130.04452)"
|
416
|
+
id="g5321-32">
|
417
|
+
<rect
|
418
|
+
rx="0.49938911"
|
419
|
+
ry="0.49747732"
|
420
|
+
y="135.76961"
|
421
|
+
x="50.036804"
|
422
|
+
height="5.6991529"
|
423
|
+
width="10.716301"
|
424
|
+
id="rect3682-0"
|
425
|
+
style="opacity:0.75;fill:#de8787;fill-opacity:1;stroke:#561818;stroke-width:0.24921615;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
426
|
+
<text
|
427
|
+
id="text4810-61"
|
428
|
+
y="138.17433"
|
429
|
+
x="55.373425"
|
430
|
+
style="font-style:normal;font-weight:normal;font-size:1.76388884px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.13187687"
|
431
|
+
xml:space="preserve"><tspan
|
432
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.13187687"
|
433
|
+
y="138.17433"
|
434
|
+
x="55.373425"
|
435
|
+
id="tspan4808-5"
|
436
|
+
sodipodi:role="line">frame 2</tspan><tspan
|
437
|
+
id="tspan4850-54"
|
438
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.13187687"
|
439
|
+
y="140.3792"
|
440
|
+
x="55.373425"
|
441
|
+
sodipodi:role="line">headers</tspan></text>
|
442
|
+
</g>
|
443
|
+
<rect
|
444
|
+
id="rect3680-5-7-6"
|
445
|
+
width="127.784"
|
446
|
+
height="20.763075"
|
447
|
+
x="50.0368"
|
448
|
+
y="159.67786"
|
449
|
+
style="fill:#ffe680;stroke:#584800;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
450
|
+
rx="1"
|
451
|
+
ry="1" />
|
452
|
+
<rect
|
453
|
+
style="opacity:0.75;fill:#87c8de;fill-opacity:1;stroke:#174251;stroke-width:0.49999997;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
454
|
+
id="rect3682-3-3-2-3-9"
|
455
|
+
width="106.32517"
|
456
|
+
height="11.456124"
|
457
|
+
x="71.495636"
|
458
|
+
y="168.98482"
|
459
|
+
ry="1"
|
460
|
+
rx="0.99999982" />
|
461
|
+
<text
|
462
|
+
xml:space="preserve"
|
463
|
+
style="font-style:normal;font-weight:normal;font-size:3.53887343px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
464
|
+
x="124.88891"
|
465
|
+
y="175.35445"
|
466
|
+
id="text4810-6-6-3-5-4-8"
|
467
|
+
transform="scale(0.99808409,1.0019196)"><tspan
|
468
|
+
sodipodi:role="line"
|
469
|
+
x="124.88891"
|
470
|
+
y="175.35445"
|
471
|
+
style="font-size:3.53887343px;text-align:center;text-anchor:middle;stroke-width:0.26458332"
|
472
|
+
id="tspan4923-6-9-7-4">packet 3 continuation</tspan></text>
|
473
|
+
<text
|
474
|
+
xml:space="preserve"
|
475
|
+
style="font-style:normal;font-weight:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
476
|
+
x="114.29908"
|
477
|
+
y="165.52347"
|
478
|
+
id="text4804-9-0-5"
|
479
|
+
transform="scale(0.99808408,1.0019196)"><tspan
|
480
|
+
sodipodi:role="line"
|
481
|
+
id="tspan4802-1-9-0"
|
482
|
+
x="114.29908"
|
483
|
+
y="165.52347"
|
484
|
+
style="font-size:5.64444447px;text-align:center;text-anchor:middle;stroke-width:0.26458332">transfer frame 3</tspan></text>
|
485
|
+
<g
|
486
|
+
style="stroke-width:0.49843231"
|
487
|
+
transform="matrix(2.0024466,0,0,2.0101417,-50.159212,-103.93133)"
|
488
|
+
id="g5321-7">
|
489
|
+
<rect
|
490
|
+
rx="0.49938911"
|
491
|
+
ry="0.49747732"
|
492
|
+
y="135.76961"
|
493
|
+
x="50.036804"
|
494
|
+
height="5.6991529"
|
495
|
+
width="10.716301"
|
496
|
+
id="rect3682-65"
|
497
|
+
style="opacity:0.75;fill:#de8787;fill-opacity:1;stroke:#561818;stroke-width:0.24921615;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
498
|
+
<text
|
499
|
+
id="text4810-69"
|
500
|
+
y="138.17433"
|
501
|
+
x="55.373425"
|
502
|
+
style="font-style:normal;font-weight:normal;font-size:1.76388884px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.13187687"
|
503
|
+
xml:space="preserve"><tspan
|
504
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.13187687"
|
505
|
+
y="138.17433"
|
506
|
+
x="55.373425"
|
507
|
+
id="tspan4808-3"
|
508
|
+
sodipodi:role="line">frame 3</tspan><tspan
|
509
|
+
id="tspan4850-7"
|
510
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.13187687"
|
511
|
+
y="140.3792"
|
512
|
+
x="55.373425"
|
513
|
+
sodipodi:role="line">headers</tspan></text>
|
514
|
+
</g>
|
515
|
+
</g>
|
516
|
+
</svg>
|
@@ -0,0 +1,420 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
3
|
+
|
4
|
+
<svg
|
5
|
+
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
|
6
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
7
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
8
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
9
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
10
|
+
xmlns="http://www.w3.org/2000/svg"
|
11
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
12
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
13
|
+
width="262.64679mm"
|
14
|
+
height="71.493126mm"
|
15
|
+
viewBox="0 0 262.64676 71.493128"
|
16
|
+
version="1.1"
|
17
|
+
id="svg8"
|
18
|
+
inkscape:version="0.92.1 r15371"
|
19
|
+
sodipodi:docname="prefixed_packets_after_extraction_and_prefixing.svg">
|
20
|
+
<defs
|
21
|
+
id="defs2">
|
22
|
+
<linearGradient
|
23
|
+
id="linearGradient4798"
|
24
|
+
osb:paint="solid">
|
25
|
+
<stop
|
26
|
+
style="stop-color:#174251;stop-opacity:1;"
|
27
|
+
offset="0"
|
28
|
+
id="stop4796" />
|
29
|
+
</linearGradient>
|
30
|
+
<marker
|
31
|
+
inkscape:stockid="DotL"
|
32
|
+
orient="auto"
|
33
|
+
refY="0"
|
34
|
+
refX="0"
|
35
|
+
id="DotL"
|
36
|
+
style="overflow:visible"
|
37
|
+
inkscape:isstock="true">
|
38
|
+
<path
|
39
|
+
id="path4562"
|
40
|
+
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
|
41
|
+
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt"
|
42
|
+
transform="matrix(0.8,0,0,0.8,5.92,0.8)"
|
43
|
+
inkscape:connector-curvature="0" />
|
44
|
+
</marker>
|
45
|
+
<linearGradient
|
46
|
+
id="linearGradient4497"
|
47
|
+
osb:paint="solid">
|
48
|
+
<stop
|
49
|
+
style="stop-color:#584800;stop-opacity:1;"
|
50
|
+
offset="0"
|
51
|
+
id="stop4495" />
|
52
|
+
</linearGradient>
|
53
|
+
<linearGradient
|
54
|
+
id="linearGradient4491"
|
55
|
+
osb:paint="solid">
|
56
|
+
<stop
|
57
|
+
style="stop-color:#584800;stop-opacity:1;"
|
58
|
+
offset="0"
|
59
|
+
id="stop4489" />
|
60
|
+
</linearGradient>
|
61
|
+
</defs>
|
62
|
+
<sodipodi:namedview
|
63
|
+
id="base"
|
64
|
+
pagecolor="#ffffff"
|
65
|
+
bordercolor="#666666"
|
66
|
+
borderopacity="1.0"
|
67
|
+
inkscape:pageopacity="0.0"
|
68
|
+
inkscape:pageshadow="2"
|
69
|
+
inkscape:zoom="0.35355339"
|
70
|
+
inkscape:cx="-374.92691"
|
71
|
+
inkscape:cy="-246.65595"
|
72
|
+
inkscape:document-units="mm"
|
73
|
+
inkscape:current-layer="layer1"
|
74
|
+
showgrid="false"
|
75
|
+
showguides="true"
|
76
|
+
inkscape:guide-bbox="true"
|
77
|
+
inkscape:snap-bbox="true"
|
78
|
+
inkscape:snap-bbox-midpoints="true"
|
79
|
+
inkscape:bbox-nodes="true"
|
80
|
+
inkscape:snap-bbox-edge-midpoints="true"
|
81
|
+
inkscape:window-width="1280"
|
82
|
+
inkscape:window-height="987"
|
83
|
+
inkscape:window-x="0"
|
84
|
+
inkscape:window-y="56"
|
85
|
+
inkscape:window-maximized="1"
|
86
|
+
fit-margin-top="5"
|
87
|
+
fit-margin-left="5"
|
88
|
+
fit-margin-bottom="5"
|
89
|
+
fit-margin-right="5"
|
90
|
+
inkscape:measure-start="109.425,102.177"
|
91
|
+
inkscape:measure-end="42.3923,85.2796">
|
92
|
+
<sodipodi:guide
|
93
|
+
position="4.9999994,49.993415"
|
94
|
+
orientation="1,0"
|
95
|
+
id="guide61"
|
96
|
+
inkscape:locked="false" />
|
97
|
+
<sodipodi:guide
|
98
|
+
position="27.659442,60.496069"
|
99
|
+
orientation="0,1"
|
100
|
+
id="guide63"
|
101
|
+
inkscape:locked="false" />
|
102
|
+
<sodipodi:guide
|
103
|
+
position="26.47516,43.996384"
|
104
|
+
orientation="0,1"
|
105
|
+
id="guide65"
|
106
|
+
inkscape:locked="false" />
|
107
|
+
<sodipodi:guide
|
108
|
+
position="27.158436,27.496706"
|
109
|
+
orientation="0,1"
|
110
|
+
id="guide67"
|
111
|
+
inkscape:locked="false" />
|
112
|
+
<sodipodi:guide
|
113
|
+
position="27.158436,10.99705"
|
114
|
+
orientation="0,1"
|
115
|
+
id="guide69"
|
116
|
+
inkscape:locked="false" />
|
117
|
+
</sodipodi:namedview>
|
118
|
+
<metadata
|
119
|
+
id="metadata5">
|
120
|
+
<rdf:RDF>
|
121
|
+
<cc:Work
|
122
|
+
rdf:about="">
|
123
|
+
<dc:format>image/svg+xml</dc:format>
|
124
|
+
<dc:type
|
125
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
126
|
+
<dc:title />
|
127
|
+
</cc:Work>
|
128
|
+
</rdf:RDF>
|
129
|
+
</metadata>
|
130
|
+
<g
|
131
|
+
inkscape:label="Layer 1"
|
132
|
+
inkscape:groupmode="layer"
|
133
|
+
id="layer1"
|
134
|
+
transform="translate(-44.695346,-93.823867)">
|
135
|
+
<g
|
136
|
+
id="g78"
|
137
|
+
transform="matrix(2.0039709,0,0,2.0165312,-50.327733,-174.709)"
|
138
|
+
style="stroke-width:0.49745274">
|
139
|
+
<g
|
140
|
+
id="g5321"
|
141
|
+
style="stroke-width:0.49745274">
|
142
|
+
<rect
|
143
|
+
style="opacity:0.75;fill:#de8787;fill-opacity:1;stroke:#561818;stroke-width:0.24872637;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
144
|
+
id="rect3682"
|
145
|
+
width="10.716301"
|
146
|
+
height="5.6991529"
|
147
|
+
x="50.036804"
|
148
|
+
y="135.76961"
|
149
|
+
ry="0.49590105"
|
150
|
+
rx="0.49900925" />
|
151
|
+
<text
|
152
|
+
xml:space="preserve"
|
153
|
+
style="font-style:normal;font-weight:normal;font-size:1.76388884px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1316177"
|
154
|
+
x="55.373425"
|
155
|
+
y="138.17433"
|
156
|
+
id="text4810"><tspan
|
157
|
+
sodipodi:role="line"
|
158
|
+
id="tspan4808"
|
159
|
+
x="55.373425"
|
160
|
+
y="138.17433"
|
161
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.1316177">frame 0</tspan><tspan
|
162
|
+
sodipodi:role="line"
|
163
|
+
x="55.373425"
|
164
|
+
y="140.3792"
|
165
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.1316177"
|
166
|
+
id="tspan4850">headers</tspan></text>
|
167
|
+
</g>
|
168
|
+
<rect
|
169
|
+
rx="0.49900925"
|
170
|
+
ry="0.49590108"
|
171
|
+
y="135.76961"
|
172
|
+
x="60.753101"
|
173
|
+
height="5.6991625"
|
174
|
+
width="13.273743"
|
175
|
+
id="rect3682-3"
|
176
|
+
style="opacity:0.75;fill:#87c8de;fill-opacity:1;stroke:#174251;stroke-width:0.24872637;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
177
|
+
<text
|
178
|
+
id="text4810-6"
|
179
|
+
y="139.1058"
|
180
|
+
x="67.229774"
|
181
|
+
style="font-style:normal;font-weight:normal;font-size:1.76388884px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1316177"
|
182
|
+
xml:space="preserve"><tspan
|
183
|
+
id="tspan4850-5"
|
184
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.1316177"
|
185
|
+
y="139.1058"
|
186
|
+
x="67.229774"
|
187
|
+
sodipodi:role="line">packet 0</tspan></text>
|
188
|
+
</g>
|
189
|
+
<g
|
190
|
+
id="g92"
|
191
|
+
transform="matrix(2.0039709,0,0,2.0165312,-50.327733,-170.71007)"
|
192
|
+
style="stroke-width:0.49745274">
|
193
|
+
<rect
|
194
|
+
rx="0.49900925"
|
195
|
+
ry="0.49590108"
|
196
|
+
y="141.96875"
|
197
|
+
x="60.753109"
|
198
|
+
height="5.6991625"
|
199
|
+
width="39.823902"
|
200
|
+
id="rect3682-3-3"
|
201
|
+
style="opacity:0.75;fill:#87c8de;fill-opacity:1;stroke:#174251;stroke-width:0.24872637;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
202
|
+
<text
|
203
|
+
id="text4810-6-6"
|
204
|
+
y="145.30495"
|
205
|
+
x="80.666779"
|
206
|
+
style="font-style:normal;font-weight:normal;font-size:1.76388884px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1316177"
|
207
|
+
xml:space="preserve"><tspan
|
208
|
+
id="tspan4923"
|
209
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.1316177"
|
210
|
+
y="145.30495"
|
211
|
+
x="80.666779"
|
212
|
+
sodipodi:role="line">packet 1</tspan></text>
|
213
|
+
<rect
|
214
|
+
rx="0.49900922"
|
215
|
+
ry="0.49590108"
|
216
|
+
y="141.96875"
|
217
|
+
x="100.577"
|
218
|
+
height="5.6991625"
|
219
|
+
width="13.458221"
|
220
|
+
id="rect3682-3-3-2-0"
|
221
|
+
style="opacity:0.75;fill:#87c8de;fill-opacity:1;stroke:#174251;stroke-width:0.24872637;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
222
|
+
<text
|
223
|
+
id="text4810-6-6-3-2"
|
224
|
+
y="144.37349"
|
225
|
+
x="107.33324"
|
226
|
+
style="font-style:normal;font-weight:normal;font-size:1.76388884px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1316177"
|
227
|
+
xml:space="preserve"><tspan
|
228
|
+
id="tspan4923-6-3"
|
229
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.1316177"
|
230
|
+
y="144.37349"
|
231
|
+
x="107.33324"
|
232
|
+
sodipodi:role="line">packet 1</tspan><tspan
|
233
|
+
id="tspan5125"
|
234
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.1316177"
|
235
|
+
y="146.57835"
|
236
|
+
x="107.33324"
|
237
|
+
sodipodi:role="line">continuation</tspan></text>
|
238
|
+
<g
|
239
|
+
id="g5321-3"
|
240
|
+
transform="translate(0,6.1991529)"
|
241
|
+
style="stroke-width:0.49745274">
|
242
|
+
<rect
|
243
|
+
style="opacity:0.75;fill:#de8787;fill-opacity:1;stroke:#561818;stroke-width:0.24872637;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
244
|
+
id="rect3682-6"
|
245
|
+
width="10.716301"
|
246
|
+
height="5.6991529"
|
247
|
+
x="50.036804"
|
248
|
+
y="135.76961"
|
249
|
+
ry="0.49590105"
|
250
|
+
rx="0.49900925" />
|
251
|
+
<text
|
252
|
+
xml:space="preserve"
|
253
|
+
style="font-style:normal;font-weight:normal;font-size:1.76388884px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1316177"
|
254
|
+
x="55.373425"
|
255
|
+
y="138.17433"
|
256
|
+
id="text4810-1"><tspan
|
257
|
+
sodipodi:role="line"
|
258
|
+
id="tspan4808-0"
|
259
|
+
x="55.373425"
|
260
|
+
y="138.17433"
|
261
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.1316177">frame 0</tspan><tspan
|
262
|
+
sodipodi:role="line"
|
263
|
+
x="55.373425"
|
264
|
+
y="140.3792"
|
265
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.1316177"
|
266
|
+
id="tspan4850-6">headers</tspan></text>
|
267
|
+
</g>
|
268
|
+
</g>
|
269
|
+
<g
|
270
|
+
id="g102"
|
271
|
+
transform="matrix(2.0039709,0,0,2.0165312,-50.327733,-166.71119)"
|
272
|
+
style="stroke-width:0.49745274">
|
273
|
+
<rect
|
274
|
+
rx="0.49900916"
|
275
|
+
ry="0.49590108"
|
276
|
+
y="148.16791"
|
277
|
+
x="60.753101"
|
278
|
+
height="5.6991625"
|
279
|
+
width="30.726629"
|
280
|
+
id="rect3682-3-3-2"
|
281
|
+
style="opacity:0.75;fill:#87c8de;fill-opacity:1;stroke:#174251;stroke-width:0.24872635;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
282
|
+
<text
|
283
|
+
id="text4810-6-6-3"
|
284
|
+
y="151.5041"
|
285
|
+
x="76.125031"
|
286
|
+
style="font-style:normal;font-weight:normal;font-size:1.76388884px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1316177"
|
287
|
+
xml:space="preserve"><tspan
|
288
|
+
id="tspan4923-6"
|
289
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.1316177"
|
290
|
+
y="151.5041"
|
291
|
+
x="76.125031"
|
292
|
+
sodipodi:role="line">packet 2</tspan></text>
|
293
|
+
<g
|
294
|
+
id="g5321-32"
|
295
|
+
transform="translate(0,12.398306)"
|
296
|
+
style="stroke-width:0.49745274">
|
297
|
+
<rect
|
298
|
+
style="opacity:0.75;fill:#de8787;fill-opacity:1;stroke:#561818;stroke-width:0.24872637;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
299
|
+
id="rect3682-0"
|
300
|
+
width="10.716301"
|
301
|
+
height="5.6991529"
|
302
|
+
x="50.036804"
|
303
|
+
y="135.76961"
|
304
|
+
ry="0.49590105"
|
305
|
+
rx="0.49900925" />
|
306
|
+
<text
|
307
|
+
xml:space="preserve"
|
308
|
+
style="font-style:normal;font-weight:normal;font-size:1.76388884px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1316177"
|
309
|
+
x="55.373425"
|
310
|
+
y="138.17433"
|
311
|
+
id="text4810-61"><tspan
|
312
|
+
sodipodi:role="line"
|
313
|
+
id="tspan4808-5"
|
314
|
+
x="55.373425"
|
315
|
+
y="138.17433"
|
316
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.1316177">frame 1</tspan><tspan
|
317
|
+
sodipodi:role="line"
|
318
|
+
x="55.373425"
|
319
|
+
y="140.3792"
|
320
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.1316177"
|
321
|
+
id="tspan4850-54">headers</tspan></text>
|
322
|
+
</g>
|
323
|
+
</g>
|
324
|
+
<g
|
325
|
+
id="g118"
|
326
|
+
transform="matrix(2.0039709,0,0,2.0165312,-50.327733,-162.71233)"
|
327
|
+
style="stroke-width:0.49745274">
|
328
|
+
<rect
|
329
|
+
rx="0.49900919"
|
330
|
+
ry="0.49590108"
|
331
|
+
y="154.36707"
|
332
|
+
x="60.753105"
|
333
|
+
height="5.6991625"
|
334
|
+
width="8.9127779"
|
335
|
+
id="rect3682-3-3-2-7"
|
336
|
+
style="opacity:0.75;fill:#87c8de;fill-opacity:1;stroke:#174251;stroke-width:0.24872635;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
337
|
+
<text
|
338
|
+
id="text4810-6-6-3-5"
|
339
|
+
y="157.70326"
|
340
|
+
x="65.200447"
|
341
|
+
style="font-style:normal;font-weight:normal;font-size:1.76388884px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1316177"
|
342
|
+
xml:space="preserve"><tspan
|
343
|
+
id="tspan4923-6-9"
|
344
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.1316177"
|
345
|
+
y="157.70326"
|
346
|
+
x="65.200447"
|
347
|
+
sodipodi:role="line">packet 3</tspan></text>
|
348
|
+
<rect
|
349
|
+
rx="0.49900916"
|
350
|
+
ry="0.49590108"
|
351
|
+
y="154.36707"
|
352
|
+
x="69.665886"
|
353
|
+
height="5.6991625"
|
354
|
+
width="53.097633"
|
355
|
+
id="rect3682-3-3-2-3"
|
356
|
+
style="opacity:0.75;fill:#87c8de;fill-opacity:1;stroke:#174251;stroke-width:0.24872635;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
357
|
+
<rect
|
358
|
+
rx="0.49900916"
|
359
|
+
ry="0.49590108"
|
360
|
+
y="154.36707"
|
361
|
+
x="122.76353"
|
362
|
+
height="5.6991625"
|
363
|
+
width="53.097633"
|
364
|
+
id="rect3682-3-3-2-3-9"
|
365
|
+
style="opacity:0.75;fill:#87c8de;fill-opacity:1;stroke:#174251;stroke-width:0.24872635;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
366
|
+
<text
|
367
|
+
id="text4810-6-6-3-5-4"
|
368
|
+
y="157.70326"
|
369
|
+
x="96.210396"
|
370
|
+
style="font-style:normal;font-weight:normal;font-size:1.76388884px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1316177"
|
371
|
+
xml:space="preserve"><tspan
|
372
|
+
id="tspan4923-6-9-7"
|
373
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.1316177"
|
374
|
+
y="157.70326"
|
375
|
+
x="96.210396"
|
376
|
+
sodipodi:role="line">packet 3 continuation</tspan></text>
|
377
|
+
<text
|
378
|
+
id="text4810-6-6-3-5-4-8"
|
379
|
+
y="157.70326"
|
380
|
+
x="149.30804"
|
381
|
+
style="font-style:normal;font-weight:normal;font-size:1.76388884px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1316177"
|
382
|
+
xml:space="preserve"><tspan
|
383
|
+
id="tspan4923-6-9-7-4"
|
384
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.1316177"
|
385
|
+
y="157.70326"
|
386
|
+
x="149.30804"
|
387
|
+
sodipodi:role="line">packet 3 continuation</tspan></text>
|
388
|
+
<g
|
389
|
+
id="g5321-32-4"
|
390
|
+
transform="translate(0,18.597459)"
|
391
|
+
style="stroke-width:0.49745274">
|
392
|
+
<rect
|
393
|
+
style="opacity:0.75;fill:#de8787;fill-opacity:1;stroke:#561818;stroke-width:0.24872637;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
394
|
+
id="rect3682-0-5"
|
395
|
+
width="10.716301"
|
396
|
+
height="5.6991529"
|
397
|
+
x="50.036804"
|
398
|
+
y="135.76961"
|
399
|
+
ry="0.49590105"
|
400
|
+
rx="0.49900925" />
|
401
|
+
<text
|
402
|
+
xml:space="preserve"
|
403
|
+
style="font-style:normal;font-weight:normal;font-size:1.76388884px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1316177"
|
404
|
+
x="55.373425"
|
405
|
+
y="138.17433"
|
406
|
+
id="text4810-61-2"><tspan
|
407
|
+
sodipodi:role="line"
|
408
|
+
id="tspan4808-5-5"
|
409
|
+
x="55.373425"
|
410
|
+
y="138.17433"
|
411
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.1316177">frame 1</tspan><tspan
|
412
|
+
sodipodi:role="line"
|
413
|
+
x="55.373425"
|
414
|
+
y="140.3792"
|
415
|
+
style="font-size:1.76388884px;text-align:center;text-anchor:middle;stroke-width:0.1316177"
|
416
|
+
id="tspan4850-54-4">headers</tspan></text>
|
417
|
+
</g>
|
418
|
+
</g>
|
419
|
+
</g>
|
420
|
+
</svg>
|
@@ -29,9 +29,8 @@ module Cosmos
|
|
29
29
|
# Only read is supported.
|
30
30
|
class CcsdsTransferFrameProtocol < Protocol
|
31
31
|
FRAME_PRIMARY_HEADER_LENGTH = 6
|
32
|
-
|
33
|
-
|
34
|
-
FIRST_HEADER_POINTER_MASK = [0b00000111, 0b11111111]
|
32
|
+
FIRST_HEADER_POINTER_BIT_OFFSET = FRAME_PRIMARY_HEADER_LENGTH * 8 - 11
|
33
|
+
FIRST_HEADER_POINTER_BITS = 11
|
35
34
|
IDLE_FRAME_FIRST_HEADER_POINTER = 0b11111111110
|
36
35
|
NO_PACKET_START_FIRST_HEADER_POINTER = 0b11111111111
|
37
36
|
FRAME_VIRTUAL_CHANNEL_BIT_OFFSET = 12
|
@@ -42,9 +41,9 @@ module Cosmos
|
|
42
41
|
SPACE_PACKET_HEADER_LENGTH = 6
|
43
42
|
SPACE_PACKET_LENGTH_BIT_OFFSET = 4 * 8
|
44
43
|
SPACE_PACKET_LENGTH_BITS = 2 * 8
|
45
|
-
SPACE_PACKET_APID_BITS =
|
44
|
+
SPACE_PACKET_APID_BITS = 11
|
46
45
|
SPACE_PACKET_APID_BIT_OFFSET = 2 * 8 - SPACE_PACKET_APID_BITS
|
47
|
-
IDLE_PACKET_APID =
|
46
|
+
IDLE_PACKET_APID = 0b11111111111
|
48
47
|
|
49
48
|
# @param transfer_frame_length [Integer] Length of transfer frame in bytes
|
50
49
|
# @param transfer_frame_secondary_header_length [Integer] Length of
|
@@ -136,18 +135,21 @@ module Cosmos
|
|
136
135
|
# packets.
|
137
136
|
def get_packet
|
138
137
|
@virtual_channels.each do |vc|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
138
|
+
# avoid extracting incomplete packets
|
139
|
+
while (vc.packet_queue.length >= 2 ||
|
140
|
+
(vc.packet_queue.length == 1 &&
|
141
|
+
vc.pending_incomplete_packet_bytes_left == 0))
|
144
142
|
packet_data = vc.packet_queue.shift
|
145
143
|
|
146
|
-
|
147
|
-
|
148
|
-
return packet_data if @include_idle_packets
|
144
|
+
return packet_data if (@include_idle_packets ||
|
145
|
+
packet_data.length < SPACE_PACKET_HEADER_LENGTH)
|
149
146
|
|
150
|
-
apid =
|
147
|
+
apid = BinaryAccessor.read(
|
148
|
+
@packet_prefix_length * 8 + SPACE_PACKET_APID_BIT_OFFSET,
|
149
|
+
SPACE_PACKET_APID_BITS,
|
150
|
+
:UINT,
|
151
|
+
packet_data,
|
152
|
+
:BIG_ENDIAN)
|
151
153
|
return packet_data unless (apid == IDLE_PACKET_APID)
|
152
154
|
end
|
153
155
|
end
|
@@ -167,9 +169,12 @@ module Cosmos
|
|
167
169
|
#
|
168
170
|
# @param frame [String] Transfer frame data.
|
169
171
|
def process_frame(frame)
|
170
|
-
first_header_pointer =
|
171
|
-
|
172
|
-
|
172
|
+
first_header_pointer = BinaryAccessor.read(
|
173
|
+
FIRST_HEADER_POINTER_BIT_OFFSET,
|
174
|
+
FIRST_HEADER_POINTER_BITS,
|
175
|
+
:UINT,
|
176
|
+
frame,
|
177
|
+
:BIG_ENDIAN)
|
173
178
|
|
174
179
|
return if (first_header_pointer == IDLE_FRAME_FIRST_HEADER_POINTER)
|
175
180
|
|
@@ -235,10 +240,14 @@ module Cosmos
|
|
235
240
|
end
|
236
241
|
vc.packet_queue[-1] << packet_continuation.slice!(0, rest_of_packet_header_length)
|
237
242
|
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
243
|
+
# actual length in ccsds space packet is stored value plus one
|
244
|
+
space_packet_data_field_length = BinaryAccessor.read(
|
245
|
+
@packet_prefix_length * 8 + SPACE_PACKET_LENGTH_BIT_OFFSET,
|
246
|
+
SPACE_PACKET_LENGTH_BITS,
|
247
|
+
:UINT,
|
248
|
+
vc.packet_queue[-1],
|
249
|
+
:BIG_ENDIAN) + 1
|
250
|
+
vc.pending_incomplete_packet_bytes_left = space_packet_data_field_length
|
242
251
|
end
|
243
252
|
|
244
253
|
if (first_header_pointer == NO_PACKET_START_FIRST_HEADER_POINTER)
|
@@ -300,61 +309,42 @@ module Cosmos
|
|
300
309
|
def store_packets(virtual_channel, frame_headers, frame_data_field)
|
301
310
|
vc = @virtual_channels[virtual_channel]
|
302
311
|
while (frame_data_field.length > 0) do
|
303
|
-
if (@prefix_packets)
|
304
|
-
vc.packet_queue << frame_headers.clone
|
305
|
-
else
|
306
|
-
vc.packet_queue << ""
|
307
|
-
end
|
308
|
-
|
309
312
|
if (frame_data_field.length < SPACE_PACKET_HEADER_LENGTH)
|
310
|
-
|
313
|
+
if (@prefix_packets)
|
314
|
+
vc.packet_queue << (frame_headers.clone << frame_data_field)
|
315
|
+
else
|
316
|
+
vc.packet_queue << frame_data_field
|
317
|
+
end
|
311
318
|
vc.pending_incomplete_packet_bytes_left = SPACE_PACKET_HEADER_LENGTH - frame_data_field.length
|
312
319
|
return
|
313
320
|
end
|
314
321
|
|
315
|
-
|
316
|
-
|
322
|
+
# actual length in ccsds space packet is stored value plus one
|
323
|
+
space_packet_data_field_length = BinaryAccessor.read(
|
324
|
+
SPACE_PACKET_LENGTH_BIT_OFFSET,
|
325
|
+
SPACE_PACKET_LENGTH_BITS,
|
326
|
+
:UINT,
|
327
|
+
frame_data_field,
|
328
|
+
:BIG_ENDIAN) + 1
|
329
|
+
space_packet_length = SPACE_PACKET_HEADER_LENGTH + space_packet_data_field_length
|
317
330
|
|
318
331
|
if (space_packet_length > frame_data_field.length)
|
319
|
-
|
332
|
+
if (@prefix_packets)
|
333
|
+
vc.packet_queue << (frame_headers.clone << frame_data_field)
|
334
|
+
else
|
335
|
+
vc.packet_queue << frame_data_field
|
336
|
+
end
|
320
337
|
vc.pending_incomplete_packet_bytes_left = space_packet_length - frame_data_field.length
|
321
338
|
return
|
322
339
|
end
|
323
340
|
|
324
|
-
|
341
|
+
if (@prefix_packets)
|
342
|
+
vc.packet_queue << (frame_headers.clone << frame_data_field.slice!(0, space_packet_length))
|
343
|
+
else
|
344
|
+
vc.packet_queue << frame_data_field.slice!(0, space_packet_length)
|
345
|
+
end
|
325
346
|
end
|
326
347
|
end
|
327
|
-
|
328
|
-
def get_space_packet_length(space_packet)
|
329
|
-
# signal more data needed if we do not have enough to determine the
|
330
|
-
# length of the space packet
|
331
|
-
return :STOP if (space_packet.length < SPACE_PACKET_HEADER_LENGTH)
|
332
|
-
|
333
|
-
# actual length in ccsds space packet is stored value plus one
|
334
|
-
space_packet_data_field_length = BinaryAccessor.read(
|
335
|
-
SPACE_PACKET_LENGTH_BIT_OFFSET,
|
336
|
-
SPACE_PACKET_LENGTH_BITS,
|
337
|
-
:UINT,
|
338
|
-
space_packet,
|
339
|
-
:BIG_ENDIAN) + 1
|
340
|
-
space_packet_length = SPACE_PACKET_HEADER_LENGTH + space_packet_data_field_length
|
341
|
-
return space_packet_length
|
342
|
-
end
|
343
|
-
|
344
|
-
def get_space_packet_apid(space_packet)
|
345
|
-
# signal more data needed if we do not have enough of the header to
|
346
|
-
# determine the apid of the space packet
|
347
|
-
return :STOP if (space_packet.length < (SPACE_PACKET_APID_BIT_OFFSET + SPACE_PACKET_APID_BITS) / 8)
|
348
|
-
|
349
|
-
# actual length in ccsds space packet is stored value plus one
|
350
|
-
space_packet_apid = BinaryAccessor.read(
|
351
|
-
SPACE_PACKET_APID_BIT_OFFSET,
|
352
|
-
SPACE_PACKET_APID_BITS,
|
353
|
-
:UINT,
|
354
|
-
space_packet,
|
355
|
-
:BIG_ENDIAN)
|
356
|
-
return space_packet_apid
|
357
|
-
end
|
358
348
|
end
|
359
349
|
end
|
360
350
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cosmos-ccsds_transfer_frames
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Erik Werner
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cosmos
|
@@ -101,6 +101,8 @@ files:
|
|
101
101
|
- Rakefile
|
102
102
|
- bin/setup
|
103
103
|
- cosmos-ccsds_transfer_frames.gemspec
|
104
|
+
- img/frames_before_packet_extraction_and_prefixing.svg
|
105
|
+
- img/prefixed_packets_after_extraction_and_prefixing.svg
|
104
106
|
- lib/cosmos/ccsds_transfer_frames.rb
|
105
107
|
- lib/cosmos/ccsds_transfer_frames/ccsds_transfer_frame_protocol.rb
|
106
108
|
- lib/cosmos/ccsds_transfer_frames/version.rb
|