ax25sdl 0.1.0
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.
- package/README.md +59 -0
- package/dist/ax25sdl/awaiting_connection.g.d.ts +7 -0
- package/dist/ax25sdl/awaiting_connection.g.d.ts.map +1 -0
- package/dist/ax25sdl/awaiting_connection.g.js +427 -0
- package/dist/ax25sdl/awaiting_connection.g.js.map +1 -0
- package/dist/ax25sdl/awaiting_connection.g.test.d.ts +2 -0
- package/dist/ax25sdl/awaiting_connection.g.test.d.ts.map +1 -0
- package/dist/ax25sdl/awaiting_connection.g.test.js +345 -0
- package/dist/ax25sdl/awaiting_connection.g.test.js.map +1 -0
- package/dist/ax25sdl/awaiting_release.g.d.ts +7 -0
- package/dist/ax25sdl/awaiting_release.g.d.ts.map +1 -0
- package/dist/ax25sdl/awaiting_release.g.js +344 -0
- package/dist/ax25sdl/awaiting_release.g.js.map +1 -0
- package/dist/ax25sdl/awaiting_release.g.test.d.ts +2 -0
- package/dist/ax25sdl/awaiting_release.g.test.d.ts.map +1 -0
- package/dist/ax25sdl/awaiting_release.g.test.js +255 -0
- package/dist/ax25sdl/awaiting_release.g.test.js.map +1 -0
- package/dist/ax25sdl/awaiting_v22_connection.g.d.ts +7 -0
- package/dist/ax25sdl/awaiting_v22_connection.g.d.ts.map +1 -0
- package/dist/ax25sdl/awaiting_v22_connection.g.js +428 -0
- package/dist/ax25sdl/awaiting_v22_connection.g.js.map +1 -0
- package/dist/ax25sdl/awaiting_v22_connection.g.test.d.ts +2 -0
- package/dist/ax25sdl/awaiting_v22_connection.g.test.d.ts.map +1 -0
- package/dist/ax25sdl/awaiting_v22_connection.g.test.js +372 -0
- package/dist/ax25sdl/awaiting_v22_connection.g.test.js.map +1 -0
- package/dist/ax25sdl/connected.g.d.ts +7 -0
- package/dist/ax25sdl/connected.g.d.ts.map +1 -0
- package/dist/ax25sdl/connected.g.js +1456 -0
- package/dist/ax25sdl/connected.g.js.map +1 -0
- package/dist/ax25sdl/connected.g.test.d.ts +2 -0
- package/dist/ax25sdl/connected.g.test.d.ts.map +1 -0
- package/dist/ax25sdl/connected.g.test.js +1313 -0
- package/dist/ax25sdl/connected.g.test.js.map +1 -0
- package/dist/ax25sdl/disconnected.g.d.ts +7 -0
- package/dist/ax25sdl/disconnected.g.d.ts.map +1 -0
- package/dist/ax25sdl/disconnected.g.js +340 -0
- package/dist/ax25sdl/disconnected.g.js.map +1 -0
- package/dist/ax25sdl/disconnected.g.test.d.ts +2 -0
- package/dist/ax25sdl/disconnected.g.test.d.ts.map +1 -0
- package/dist/ax25sdl/disconnected.g.test.js +266 -0
- package/dist/ax25sdl/disconnected.g.test.js.map +1 -0
- package/dist/ax25sdl/index.d.ts +8 -0
- package/dist/ax25sdl/index.d.ts.map +1 -0
- package/dist/ax25sdl/index.js +10 -0
- package/dist/ax25sdl/index.js.map +1 -0
- package/dist/ax25sdl/sdl.test.d.ts +2 -0
- package/dist/ax25sdl/sdl.test.d.ts.map +1 -0
- package/dist/ax25sdl/sdl.test.js +47 -0
- package/dist/ax25sdl/sdl.test.js.map +1 -0
- package/dist/ax25sdl/subroutines.g.d.ts +7 -0
- package/dist/ax25sdl/subroutines.g.d.ts.map +1 -0
- package/dist/ax25sdl/subroutines.g.js +497 -0
- package/dist/ax25sdl/subroutines.g.js.map +1 -0
- package/dist/ax25sdl/types.d.ts +94 -0
- package/dist/ax25sdl/types.d.ts.map +1 -0
- package/dist/ax25sdl/types.js +10 -0
- package/dist/ax25sdl/types.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
// Code generated by tools/Packet.Sdl.CodeGen from spec-sdl/data-link/subroutines.sdl.yaml.
|
|
2
|
+
// DO NOT EDIT. Run `dotnet run --project tools/Packet.Sdl.CodeGen` to regenerate.
|
|
3
|
+
/**
|
|
4
|
+
* SDL subroutines for the data_link machine.
|
|
5
|
+
* Source: AX.25 v2.2 rev 4, figure C4.7.
|
|
6
|
+
*/
|
|
7
|
+
export const DataLinkSubroutines = {
|
|
8
|
+
machine: "data_link",
|
|
9
|
+
source: { spec: "AX.25 v2.2 rev 4", figure: "C4.7", url: "https://github.com/packethacking/ax25spec/blob/main/doc/ax.25.2.2.4_Oct_25.md" },
|
|
10
|
+
subroutines: [
|
|
11
|
+
{
|
|
12
|
+
name: "N_r_Error_Recovery",
|
|
13
|
+
paths: [
|
|
14
|
+
{
|
|
15
|
+
id: "t01_recover",
|
|
16
|
+
guard: "",
|
|
17
|
+
actions: [
|
|
18
|
+
{ verb: "DL-ERROR Indication (J)", kind: "signal_upper" },
|
|
19
|
+
{ verb: "Establish_Data_Link", kind: "subroutine" },
|
|
20
|
+
{ verb: "Clear Layer 3 Initiated", kind: "processing" },
|
|
21
|
+
],
|
|
22
|
+
notes: "",
|
|
23
|
+
references: [],
|
|
24
|
+
loops: [],
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
notes: "Three-step recovery when an inbound frame's N(r) is invalid.\nSignals DL-ERROR (J), calls Establish_Data_Link to restart the\nlink, then clears the Layer-3-initiated flag.\n",
|
|
28
|
+
references: [],
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: "Clear_Exception_Conditions",
|
|
32
|
+
paths: [
|
|
33
|
+
{
|
|
34
|
+
id: "t01_clear_all",
|
|
35
|
+
guard: "",
|
|
36
|
+
actions: [
|
|
37
|
+
{ verb: "Clear Peer Receiver Busy", kind: "processing" },
|
|
38
|
+
{ verb: "Clear Own Receiver Busy", kind: "processing" },
|
|
39
|
+
{ verb: "Clear Reject Condition", kind: "processing" },
|
|
40
|
+
{ verb: "Clear Sreject Condition", kind: "processing" },
|
|
41
|
+
{ verb: "Clear Acknowledge Pending", kind: "processing" },
|
|
42
|
+
{ verb: "Discard I Queue Entries", kind: "processing" },
|
|
43
|
+
],
|
|
44
|
+
notes: "",
|
|
45
|
+
references: [],
|
|
46
|
+
loops: [],
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
notes: "Six-action reset of all exception bookkeeping. Drawn as a single\nmulti-line processing box in the figure; transcribed as one\naction per line per the runbook's multi-line-box rule.\n",
|
|
50
|
+
references: [],
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "Transmit_Enquiry",
|
|
54
|
+
paths: [
|
|
55
|
+
{
|
|
56
|
+
id: "t01_not_busy_sends_rr",
|
|
57
|
+
guard: "not own_receiver_busy",
|
|
58
|
+
actions: [
|
|
59
|
+
{ verb: "P <- 1", kind: "processing" },
|
|
60
|
+
{ verb: "N(r) <- V(r)", kind: "processing" },
|
|
61
|
+
{ verb: "RR Command", kind: "signal_lower" },
|
|
62
|
+
{ verb: "Clear Acknowledge Pending", kind: "processing" },
|
|
63
|
+
{ verb: "Start T1", kind: "processing" },
|
|
64
|
+
],
|
|
65
|
+
notes: "",
|
|
66
|
+
references: [],
|
|
67
|
+
loops: [],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
id: "t02_busy_sends_rnr",
|
|
71
|
+
guard: "own_receiver_busy",
|
|
72
|
+
actions: [
|
|
73
|
+
{ verb: "P <- 1", kind: "processing" },
|
|
74
|
+
{ verb: "N(r) <- V(r)", kind: "processing" },
|
|
75
|
+
{ verb: "RNR Command", kind: "signal_lower" },
|
|
76
|
+
{ verb: "Clear Acknowledge Pending", kind: "processing" },
|
|
77
|
+
{ verb: "Start T1", kind: "processing" },
|
|
78
|
+
],
|
|
79
|
+
notes: "",
|
|
80
|
+
references: [],
|
|
81
|
+
loops: [],
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
notes: "Polls the peer with RR-cmd or RNR-cmd (P=1) depending on whether\nwe ourselves are in busy state.\n",
|
|
85
|
+
references: [],
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
name: "Enquiry_Response",
|
|
89
|
+
paths: [
|
|
90
|
+
{
|
|
91
|
+
id: "t01_not_polled_rr_response",
|
|
92
|
+
guard: "not f_eq_1_and_supervisory_or_i",
|
|
93
|
+
actions: [
|
|
94
|
+
{ verb: "N(r) <- V(r)", kind: "processing" },
|
|
95
|
+
{ verb: "RR Response", kind: "signal_lower" },
|
|
96
|
+
{ verb: "Clear Acknowledge Pending", kind: "processing" },
|
|
97
|
+
],
|
|
98
|
+
notes: "F==1-supervisory-or-I check fails; just send RR Response.\n",
|
|
99
|
+
references: [],
|
|
100
|
+
loops: [],
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
id: "t02_polled_busy_rnr",
|
|
104
|
+
guard: "f_eq_1_and_supervisory_or_i and own_receiver_busy",
|
|
105
|
+
actions: [
|
|
106
|
+
{ verb: "N(r) <- V(r)", kind: "processing" },
|
|
107
|
+
{ verb: "RNR Response", kind: "signal_lower" },
|
|
108
|
+
{ verb: "Clear Acknowledge Pending", kind: "processing" },
|
|
109
|
+
],
|
|
110
|
+
notes: "Polled and we're busy: respond with RNR.\n",
|
|
111
|
+
references: [],
|
|
112
|
+
loops: [],
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
id: "t03_polled_srej_disabled_rr",
|
|
116
|
+
guard: "f_eq_1_and_supervisory_or_i and not own_receiver_busy and not srej_enabled",
|
|
117
|
+
actions: [
|
|
118
|
+
{ verb: "N(r) <- V(r)", kind: "processing" },
|
|
119
|
+
{ verb: "RR Response", kind: "signal_lower" },
|
|
120
|
+
{ verb: "Clear Acknowledge Pending", kind: "processing" },
|
|
121
|
+
],
|
|
122
|
+
notes: "Polled, not busy, SREJ not enabled → just RR Response.\n(Added in commit 46d3782 after the original redraw omitted\nthis edge.)\n",
|
|
123
|
+
references: [],
|
|
124
|
+
loops: [],
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
id: "t04_polled_srej_mod8_dl_error_then_buf_yes",
|
|
128
|
+
guard: "f_eq_1_and_supervisory_or_i and not own_receiver_busy and srej_enabled and mod_8 and out_of_sequence_frames_in_receive_buffer",
|
|
129
|
+
actions: [
|
|
130
|
+
{ verb: "N(r) <- V(r)", kind: "processing" },
|
|
131
|
+
{ verb: "DL-ERROR Indication (add)", kind: "signal_upper" },
|
|
132
|
+
{ verb: "SREJ", kind: "signal_lower" },
|
|
133
|
+
{ verb: "RR Response", kind: "signal_lower" },
|
|
134
|
+
{ verb: "Clear Acknowledge Pending", kind: "processing" },
|
|
135
|
+
],
|
|
136
|
+
notes: "Polled, not busy, SREJ enabled, Mod 8 (so DL-ERROR add),\nand we have stored out-of-sequence frames → emit SREJ\nbefore the RR Response.\n",
|
|
137
|
+
references: [],
|
|
138
|
+
loops: [],
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
id: "t05_polled_srej_mod8_dl_error_then_buf_no",
|
|
142
|
+
guard: "f_eq_1_and_supervisory_or_i and not own_receiver_busy and srej_enabled and mod_8 and not out_of_sequence_frames_in_receive_buffer",
|
|
143
|
+
actions: [
|
|
144
|
+
{ verb: "N(r) <- V(r)", kind: "processing" },
|
|
145
|
+
{ verb: "DL-ERROR Indication (add)", kind: "signal_upper" },
|
|
146
|
+
{ verb: "RR Response", kind: "signal_lower" },
|
|
147
|
+
{ verb: "Clear Acknowledge Pending", kind: "processing" },
|
|
148
|
+
],
|
|
149
|
+
notes: "Same as t04 but no stored out-of-sequence frames → straight\nto RR Response after DL-ERROR.\n",
|
|
150
|
+
references: [],
|
|
151
|
+
loops: [],
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
id: "t06_polled_srej_mod128_buf_yes",
|
|
155
|
+
guard: "f_eq_1_and_supervisory_or_i and not own_receiver_busy and srej_enabled and not mod_8 and out_of_sequence_frames_in_receive_buffer",
|
|
156
|
+
actions: [
|
|
157
|
+
{ verb: "N(r) <- V(r)", kind: "processing" },
|
|
158
|
+
{ verb: "SREJ", kind: "signal_lower" },
|
|
159
|
+
{ verb: "RR Response", kind: "signal_lower" },
|
|
160
|
+
{ verb: "Clear Acknowledge Pending", kind: "processing" },
|
|
161
|
+
],
|
|
162
|
+
notes: "Polled, not busy, SREJ enabled, Mod 128 (no DL-ERROR), and\nstored frames present → SREJ then RR Response.\n",
|
|
163
|
+
references: [],
|
|
164
|
+
loops: [],
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
id: "t07_polled_srej_mod128_buf_no",
|
|
168
|
+
guard: "f_eq_1_and_supervisory_or_i and not own_receiver_busy and srej_enabled and not mod_8 and not out_of_sequence_frames_in_receive_buffer",
|
|
169
|
+
actions: [
|
|
170
|
+
{ verb: "N(r) <- V(r)", kind: "processing" },
|
|
171
|
+
{ verb: "RR Response", kind: "signal_lower" },
|
|
172
|
+
{ verb: "Clear Acknowledge Pending", kind: "processing" },
|
|
173
|
+
],
|
|
174
|
+
notes: "Polled, not busy, SREJ enabled, Mod 128, no stored frames →\nstraight to RR Response.\n",
|
|
175
|
+
references: [],
|
|
176
|
+
loops: [],
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
notes: "Polled-response handler. Five chained decisions; multiple paths\nconverge on a shared \"RR Response\" + \"Clear Acknowledge Pending\"\ntail before return.\n\nBoth figure ambiguities flagged on the original transcription\n(commit caa7326) were resolved upstream in commit 46d3782:\nn22 SREJ-Enabled?=No now explicitly routes to RR Response.\n",
|
|
180
|
+
references: [],
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
name: "Invoke_Retransmission",
|
|
184
|
+
paths: [
|
|
185
|
+
{
|
|
186
|
+
id: "t01_retransmit_loop",
|
|
187
|
+
guard: "",
|
|
188
|
+
actions: [
|
|
189
|
+
{ verb: "Backtrack", kind: "processing" },
|
|
190
|
+
{ verb: "X <- V(s)", kind: "processing" },
|
|
191
|
+
{ verb: "V(s) <- N(r)", kind: "processing" },
|
|
192
|
+
{ verb: "Push Old I Frame onto Queue", kind: "internal_out" },
|
|
193
|
+
{ verb: "V(s) <- V(s) + 1", kind: "processing" },
|
|
194
|
+
],
|
|
195
|
+
notes: "The figure draws this as a diamond loop `Push... → V(s) := V(s)+1 → V(s) == X? → if No, back to Push`. Our `loop_while` construct iterates while its predicate is TRUE, so we encode the inverse `v_s_neq_x` (predicate `not v_s_eq_x`). A future codegen extension could accept a `negate: true` modifier so the YAML can reuse the figure's literal predicate; for now we encode the inverse.\n",
|
|
196
|
+
references: [],
|
|
197
|
+
loops: [
|
|
198
|
+
{ start: 3, length: 2, predicate: "not v_s_eq_x" },
|
|
199
|
+
],
|
|
200
|
+
},
|
|
201
|
+
],
|
|
202
|
+
notes: "Push every I-frame from N(r) up to V(s) back onto the send\nqueue. Spec-canonical loop: backtrack V(s) to N(r), push,\nincrement, repeat until back at X (the original V(s)).\n",
|
|
203
|
+
references: [],
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
name: "Check_I_Frame_Acknowledged",
|
|
207
|
+
paths: [
|
|
208
|
+
{
|
|
209
|
+
id: "t01_peer_busy_t1_running",
|
|
210
|
+
guard: "peer_receiver_busy and t1_running",
|
|
211
|
+
actions: [
|
|
212
|
+
{ verb: "V(a) <- N(r)", kind: "processing" },
|
|
213
|
+
{ verb: "Stop T3", kind: "processing" },
|
|
214
|
+
],
|
|
215
|
+
notes: "",
|
|
216
|
+
references: [],
|
|
217
|
+
loops: [],
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
id: "t02_peer_busy_t1_stopped",
|
|
221
|
+
guard: "peer_receiver_busy and not t1_running",
|
|
222
|
+
actions: [
|
|
223
|
+
{ verb: "V(a) <- N(r)", kind: "processing" },
|
|
224
|
+
{ verb: "Stop T3", kind: "processing" },
|
|
225
|
+
{ verb: "Start T1", kind: "processing" },
|
|
226
|
+
],
|
|
227
|
+
notes: "",
|
|
228
|
+
references: [],
|
|
229
|
+
loops: [],
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
id: "t03_caught_up_select_t1",
|
|
233
|
+
guard: "not peer_receiver_busy and n_r_eq_v_s",
|
|
234
|
+
actions: [
|
|
235
|
+
{ verb: "V(a) <- N(r)", kind: "processing" },
|
|
236
|
+
{ verb: "Stop T1", kind: "processing" },
|
|
237
|
+
{ verb: "Start T3", kind: "processing" },
|
|
238
|
+
{ verb: "Select_T1_Value", kind: "subroutine" },
|
|
239
|
+
],
|
|
240
|
+
notes: "Peer not busy, N(r) == V(s): we're fully caught up. Update\nV(a), stop T1, start T3, then run Select_T1_Value to\nrecompute the next T1.\n",
|
|
241
|
+
references: [],
|
|
242
|
+
loops: [],
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
id: "t04_partial_ack_n_r_eq_v_a",
|
|
246
|
+
guard: "not peer_receiver_busy and not n_r_eq_v_s and n_r_eq_v_a",
|
|
247
|
+
actions: [],
|
|
248
|
+
notes: "Peer not busy, N(r) != V(s) but N(r) == V(a): no progress;\ndrop straight to the join (no action).\n",
|
|
249
|
+
references: [],
|
|
250
|
+
loops: [],
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
id: "t05_partial_ack_progress",
|
|
254
|
+
guard: "not peer_receiver_busy and not n_r_eq_v_s and not n_r_eq_v_a",
|
|
255
|
+
actions: [
|
|
256
|
+
{ verb: "V(a) <- N(r)", kind: "processing" },
|
|
257
|
+
{ verb: "Start T1", kind: "processing" },
|
|
258
|
+
],
|
|
259
|
+
notes: "Peer not busy, partial ack with progress: advance V(a) and\nrestart T1.\n",
|
|
260
|
+
references: [],
|
|
261
|
+
loops: [],
|
|
262
|
+
},
|
|
263
|
+
],
|
|
264
|
+
notes: "Process an incoming N(r) and update V(a) / T1 / T3 state\naccordingly. Four chained decisions, multiple join paths.\n",
|
|
265
|
+
references: [],
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
name: "Establish_Data_Link",
|
|
269
|
+
paths: [
|
|
270
|
+
{
|
|
271
|
+
id: "t01_mod_8_sabm",
|
|
272
|
+
guard: "not mod_128",
|
|
273
|
+
actions: [
|
|
274
|
+
{ verb: "Clear Exception Conditions", kind: "processing" },
|
|
275
|
+
{ verb: "RC <- 1", kind: "processing" },
|
|
276
|
+
{ verb: "P <- 1", kind: "processing" },
|
|
277
|
+
{ verb: "SABM", kind: "signal_lower" },
|
|
278
|
+
{ verb: "Stop T3", kind: "processing" },
|
|
279
|
+
{ verb: "Start T1", kind: "processing" },
|
|
280
|
+
],
|
|
281
|
+
notes: "",
|
|
282
|
+
references: [],
|
|
283
|
+
loops: [],
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
id: "t02_mod_128_sabme",
|
|
287
|
+
guard: "mod_128",
|
|
288
|
+
actions: [
|
|
289
|
+
{ verb: "Clear Exception Conditions", kind: "processing" },
|
|
290
|
+
{ verb: "RC <- 1", kind: "processing" },
|
|
291
|
+
{ verb: "P <- 1", kind: "processing" },
|
|
292
|
+
{ verb: "SABME", kind: "signal_lower" },
|
|
293
|
+
{ verb: "Stop T3", kind: "processing" },
|
|
294
|
+
{ verb: "Start T1", kind: "processing" },
|
|
295
|
+
],
|
|
296
|
+
notes: "",
|
|
297
|
+
references: [],
|
|
298
|
+
loops: [],
|
|
299
|
+
},
|
|
300
|
+
],
|
|
301
|
+
notes: "Clear exception bookkeeping, set the retry counter and P flag,\nsend SABM or SABME depending on Mod 128 state, then start T1.\n",
|
|
302
|
+
references: [],
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
name: "Establish_Extended_Data_Link",
|
|
306
|
+
paths: [
|
|
307
|
+
{
|
|
308
|
+
id: "t01_mod_8_sabm",
|
|
309
|
+
guard: "not mod_128",
|
|
310
|
+
actions: [
|
|
311
|
+
{ verb: "Clear Exception Conditions", kind: "processing" },
|
|
312
|
+
{ verb: "RC <- 1", kind: "processing" },
|
|
313
|
+
{ verb: "P <- 1", kind: "processing" },
|
|
314
|
+
{ verb: "SABM", kind: "signal_lower" },
|
|
315
|
+
{ verb: "Stop T3", kind: "processing" },
|
|
316
|
+
{ verb: "Start T1", kind: "processing" },
|
|
317
|
+
],
|
|
318
|
+
notes: "",
|
|
319
|
+
references: [],
|
|
320
|
+
loops: [],
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
id: "t02_mod_128_sabme",
|
|
324
|
+
guard: "mod_128",
|
|
325
|
+
actions: [
|
|
326
|
+
{ verb: "Clear Exception Conditions", kind: "processing" },
|
|
327
|
+
{ verb: "RC <- 1", kind: "processing" },
|
|
328
|
+
{ verb: "P <- 1", kind: "processing" },
|
|
329
|
+
{ verb: "SABME", kind: "signal_lower" },
|
|
330
|
+
{ verb: "Stop T3", kind: "processing" },
|
|
331
|
+
{ verb: "Start T1", kind: "processing" },
|
|
332
|
+
],
|
|
333
|
+
notes: "",
|
|
334
|
+
references: [],
|
|
335
|
+
loops: [],
|
|
336
|
+
},
|
|
337
|
+
],
|
|
338
|
+
notes: "Shares its body with Establish_Data_Link (both subroutine-start\nnodes in the graphml flow into the same shared body at n48).\nFunctionally identical — the body's `Mod 128?` test picks\nSABM vs SABME so the caller's choice of name is informational.\nTracked separately because state-machine pages (figc4.2 vs\nfigc4.4) reference them by distinct names.\n",
|
|
339
|
+
references: [],
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
name: "Check_Need_For_Response",
|
|
343
|
+
paths: [
|
|
344
|
+
{
|
|
345
|
+
id: "t01_command_poll_enquiry_response",
|
|
346
|
+
guard: "command_and_p_eq_1",
|
|
347
|
+
actions: [
|
|
348
|
+
{ verb: "Enquiry_Response_F_1", kind: "subroutine" },
|
|
349
|
+
],
|
|
350
|
+
notes: "",
|
|
351
|
+
references: [],
|
|
352
|
+
loops: [],
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
id: "t02_response_f_unexpected_dl_error",
|
|
356
|
+
guard: "not command_and_p_eq_1 and response_and_f_eq_1",
|
|
357
|
+
actions: [
|
|
358
|
+
{ verb: "DL-ERROR Indication (A)", kind: "signal_upper" },
|
|
359
|
+
],
|
|
360
|
+
notes: "",
|
|
361
|
+
references: [],
|
|
362
|
+
loops: [],
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
id: "t03_neither_silent_return",
|
|
366
|
+
guard: "not command_and_p_eq_1 and not response_and_f_eq_1",
|
|
367
|
+
actions: [],
|
|
368
|
+
notes: "",
|
|
369
|
+
references: [],
|
|
370
|
+
loops: [],
|
|
371
|
+
},
|
|
372
|
+
],
|
|
373
|
+
notes: "Looks at incoming command/response role + P/F bit and either\nsends Enquiry_Response(F=1) (when it was a poll), surfaces a\nDL-ERROR (A) (response with F=1 when not expected), or returns\nsilently.\n",
|
|
374
|
+
references: [],
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
name: "UI_Check",
|
|
378
|
+
paths: [
|
|
379
|
+
{
|
|
380
|
+
id: "t01_response_dl_error_q",
|
|
381
|
+
guard: "not incoming_is_command",
|
|
382
|
+
actions: [
|
|
383
|
+
{ verb: "DL-ERROR Indication (Q)", kind: "signal_upper" },
|
|
384
|
+
],
|
|
385
|
+
notes: "",
|
|
386
|
+
references: [],
|
|
387
|
+
loops: [],
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
id: "t02_command_valid_unit_data",
|
|
391
|
+
guard: "incoming_is_command and ui_info_field_valid",
|
|
392
|
+
actions: [
|
|
393
|
+
{ verb: "DL-UNIT-DATA Indication", kind: "signal_upper" },
|
|
394
|
+
],
|
|
395
|
+
notes: "",
|
|
396
|
+
references: [],
|
|
397
|
+
loops: [],
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
id: "t03_command_invalid_dl_error_k",
|
|
401
|
+
guard: "incoming_is_command and not ui_info_field_valid",
|
|
402
|
+
actions: [
|
|
403
|
+
{ verb: "DL-ERROR Indication (K)", kind: "signal_upper" },
|
|
404
|
+
],
|
|
405
|
+
notes: "",
|
|
406
|
+
references: [],
|
|
407
|
+
loops: [],
|
|
408
|
+
},
|
|
409
|
+
],
|
|
410
|
+
notes: "Validates a received UI frame. Rejects if it's a response (Q\nerror), accepts if info length ≤ N1 and the content is\noctet-aligned (DL-UNIT-DATA indication), or surfaces a K error.\n",
|
|
411
|
+
references: [],
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
name: "Select_T1_Value",
|
|
415
|
+
paths: [
|
|
416
|
+
{
|
|
417
|
+
id: "t01_fresh_ack_iir",
|
|
418
|
+
guard: "rc_eq_0",
|
|
419
|
+
actions: [
|
|
420
|
+
{ verb: "SRT <- 7(SRT)/8 + (T1)/8 - (Remaining Time on T1 When Last Stopped)/8", kind: "processing" },
|
|
421
|
+
{ verb: "Next T1 <- 2 * SRT", kind: "processing" },
|
|
422
|
+
],
|
|
423
|
+
notes: "",
|
|
424
|
+
references: [],
|
|
425
|
+
loops: [],
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
id: "t02_retry_t1_expired",
|
|
429
|
+
guard: "not rc_eq_0 and t1_expired",
|
|
430
|
+
actions: [
|
|
431
|
+
{ verb: "Next T1 <- (RC*0.25)+SRT*2", kind: "processing" },
|
|
432
|
+
],
|
|
433
|
+
notes: "",
|
|
434
|
+
references: [],
|
|
435
|
+
loops: [],
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
id: "t03_no_change",
|
|
439
|
+
guard: "not rc_eq_0 and not t1_expired",
|
|
440
|
+
actions: [],
|
|
441
|
+
notes: "",
|
|
442
|
+
references: [],
|
|
443
|
+
loops: [],
|
|
444
|
+
},
|
|
445
|
+
],
|
|
446
|
+
notes: "Recompute SRT (smoothed round-trip estimate) and the next T1\ntimeout. On a fresh-ack path (RC==0) the spec's IIR-style\nformula runs; on a retry path (RC > 0, T1 expired) we just\nbump T1V to next-attempt. Otherwise return without change.\n\nCanonical name `Select_T1_Value` (the figure's start label is\njust \"Select T1\" but the existing registry / state pages use\nthe longer form).\n",
|
|
447
|
+
references: [],
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
name: "Set_Version_2_0",
|
|
451
|
+
paths: [
|
|
452
|
+
{
|
|
453
|
+
id: "t01_v2_0_defaults",
|
|
454
|
+
guard: "",
|
|
455
|
+
actions: [
|
|
456
|
+
{ verb: "Set Half Duplex", kind: "processing" },
|
|
457
|
+
{ verb: "Set Implicit Reject", kind: "processing" },
|
|
458
|
+
{ verb: "Modulo <- 8", kind: "processing" },
|
|
459
|
+
{ verb: "N1 <- 2048", kind: "processing" },
|
|
460
|
+
{ verb: "k <- 8", kind: "processing" },
|
|
461
|
+
{ verb: "T2 <- 3000", kind: "processing" },
|
|
462
|
+
{ verb: "N2 <- 10", kind: "processing" },
|
|
463
|
+
],
|
|
464
|
+
notes: "",
|
|
465
|
+
references: [],
|
|
466
|
+
loops: [],
|
|
467
|
+
},
|
|
468
|
+
],
|
|
469
|
+
notes: "Configure all v2.0-specific parameters. Single multi-line\nprocessing box in the figure; transcribed as one action per\nline.\n",
|
|
470
|
+
references: [],
|
|
471
|
+
},
|
|
472
|
+
{
|
|
473
|
+
name: "Set_Version_2_2",
|
|
474
|
+
paths: [
|
|
475
|
+
{
|
|
476
|
+
id: "t01_v2_2_defaults",
|
|
477
|
+
guard: "",
|
|
478
|
+
actions: [
|
|
479
|
+
{ verb: "Set Half Duplex", kind: "processing" },
|
|
480
|
+
{ verb: "Set Selective Reject", kind: "processing" },
|
|
481
|
+
{ verb: "Modulo <- 128", kind: "processing" },
|
|
482
|
+
{ verb: "N1 <- 2048", kind: "processing" },
|
|
483
|
+
{ verb: "k <- 32", kind: "processing" },
|
|
484
|
+
{ verb: "T2 <- 3000", kind: "processing" },
|
|
485
|
+
{ verb: "N2 <- 10", kind: "processing" },
|
|
486
|
+
],
|
|
487
|
+
notes: "",
|
|
488
|
+
references: [],
|
|
489
|
+
loops: [],
|
|
490
|
+
},
|
|
491
|
+
],
|
|
492
|
+
notes: "Configure all v2.2-specific parameters. Differs from v2.0 in\nSelective Reject (vs Implicit Reject), Modulo 128 (vs 8) and\nk = 32 (vs 8).\n",
|
|
493
|
+
references: [],
|
|
494
|
+
},
|
|
495
|
+
],
|
|
496
|
+
};
|
|
497
|
+
//# sourceMappingURL=subroutines.g.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subroutines.g.js","sourceRoot":"","sources":["../../src/ax25sdl/subroutines.g.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,kFAAkF;AAIlF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAoB;IAClD,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,+EAA+E,EAAE;IAC1I,WAAW,EAAE;QACX;YACE,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,aAAa;oBACjB,KAAK,EAAE,EAAE;oBACT,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,cAAc,EAAE;wBACzD,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,YAAY,EAAE;wBACnD,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,YAAY,EAAE;qBACxD;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;aACF;YACD,KAAK,EAAE,+KAA+K;YACtL,UAAU,EAAE,EAAE;SACf;QACD;YACE,IAAI,EAAE,4BAA4B;YAClC,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,eAAe;oBACnB,KAAK,EAAE,EAAE;oBACT,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,YAAY,EAAE;wBACxD,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,YAAY,EAAE;wBACvD,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,YAAY,EAAE;wBACtD,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,YAAY,EAAE;wBACvD,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,YAAY,EAAE;wBACzD,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,YAAY,EAAE;qBACxD;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;aACF;YACD,KAAK,EAAE,yLAAyL;YAChM,UAAU,EAAE,EAAE;SACf;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,uBAAuB;oBAC3B,KAAK,EAAE,uBAAuB;oBAC9B,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE;wBACtC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC5C,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE;wBAC5C,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,YAAY,EAAE;wBACzD,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;qBACzC;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,oBAAoB;oBACxB,KAAK,EAAE,mBAAmB;oBAC1B,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE;wBACtC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC5C,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE;wBAC7C,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,YAAY,EAAE;wBACzD,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;qBACzC;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;aACF;YACD,KAAK,EAAE,qGAAqG;YAC5G,UAAU,EAAE,EAAE;SACf;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,4BAA4B;oBAChC,KAAK,EAAE,iCAAiC;oBACxC,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC5C,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE;wBAC7C,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,YAAY,EAAE;qBAC1D;oBACD,KAAK,EAAE,6DAA6D;oBACpE,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,qBAAqB;oBACzB,KAAK,EAAE,mDAAmD;oBAC1D,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC5C,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE;wBAC9C,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,YAAY,EAAE;qBAC1D;oBACD,KAAK,EAAE,4CAA4C;oBACnD,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,6BAA6B;oBACjC,KAAK,EAAE,4EAA4E;oBACnF,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC5C,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE;wBAC7C,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,YAAY,EAAE;qBAC1D;oBACD,KAAK,EAAE,mIAAmI;oBAC1I,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,4CAA4C;oBAChD,KAAK,EAAE,+HAA+H;oBACtI,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC5C,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,cAAc,EAAE;wBAC3D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE;wBACtC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE;wBAC7C,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,YAAY,EAAE;qBAC1D;oBACD,KAAK,EAAE,4IAA4I;oBACnJ,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,2CAA2C;oBAC/C,KAAK,EAAE,mIAAmI;oBAC1I,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC5C,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,cAAc,EAAE;wBAC3D,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE;wBAC7C,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,YAAY,EAAE;qBAC1D;oBACD,KAAK,EAAE,+FAA+F;oBACtG,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,gCAAgC;oBACpC,KAAK,EAAE,mIAAmI;oBAC1I,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC5C,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE;wBACtC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE;wBAC7C,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,YAAY,EAAE;qBAC1D;oBACD,KAAK,EAAE,8GAA8G;oBACrH,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,+BAA+B;oBACnC,KAAK,EAAE,uIAAuI;oBAC9I,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC5C,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE;wBAC7C,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,YAAY,EAAE;qBAC1D;oBACD,KAAK,EAAE,yFAAyF;oBAChG,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;aACF;YACD,KAAK,EAAE,uVAAuV;YAC9V,UAAU,EAAE,EAAE;SACf;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,qBAAqB;oBACzB,KAAK,EAAE,EAAE;oBACT,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE;wBACzC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE;wBACzC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC5C,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,EAAE,cAAc,EAAE;wBAC7D,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,YAAY,EAAE;qBACjD;oBACD,KAAK,EAAE,mYAAmY;oBAC1Y,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE;wBACL,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE;qBACnD;iBACF;aACF;YACD,KAAK,EAAE,iLAAiL;YACxL,UAAU,EAAE,EAAE;SACf;QACD;YACE,IAAI,EAAE,4BAA4B;YAClC,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,0BAA0B;oBAC9B,KAAK,EAAE,mCAAmC;oBAC1C,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC5C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE;qBACxC;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,0BAA0B;oBAC9B,KAAK,EAAE,uCAAuC;oBAC9C,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC5C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE;wBACvC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;qBACzC;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,yBAAyB;oBAC7B,KAAK,EAAE,uCAAuC;oBAC9C,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC5C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE;wBACvC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;wBACxC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE;qBAChD;oBACD,KAAK,EAAE,4IAA4I;oBACnJ,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,4BAA4B;oBAChC,KAAK,EAAE,0DAA0D;oBACjE,OAAO,EAAE,EAAE;oBACX,KAAK,EAAE,sGAAsG;oBAC7G,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,0BAA0B;oBAC9B,KAAK,EAAE,8DAA8D;oBACrE,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC5C,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;qBACzC;oBACD,KAAK,EAAE,2EAA2E;oBAClF,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;aACF;YACD,KAAK,EAAE,uHAAuH;YAC9H,UAAU,EAAE,EAAE;SACf;QACD;YACE,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,gBAAgB;oBACpB,KAAK,EAAE,aAAa;oBACpB,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC1D,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE;wBACvC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE;wBACtC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE;wBACtC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE;wBACvC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;qBACzC;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,mBAAmB;oBACvB,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC1D,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE;wBACvC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE;wBACtC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE;wBACvC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE;wBACvC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;qBACzC;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;aACF;YACD,KAAK,EAAE,iIAAiI;YACxI,UAAU,EAAE,EAAE;SACf;QACD;YACE,IAAI,EAAE,8BAA8B;YACpC,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,gBAAgB;oBACpB,KAAK,EAAE,aAAa;oBACpB,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC1D,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE;wBACvC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE;wBACtC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE;wBACtC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE;wBACvC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;qBACzC;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,mBAAmB;oBACvB,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC1D,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE;wBACvC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE;wBACtC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE;wBACvC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE;wBACvC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;qBACzC;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;aACF;YACD,KAAK,EAAE,oWAAoW;YAC3W,UAAU,EAAE,EAAE;SACf;QACD;YACE,IAAI,EAAE,yBAAyB;YAC/B,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,mCAAmC;oBACvC,KAAK,EAAE,oBAAoB;oBAC3B,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,YAAY,EAAE;qBACrD;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,oCAAoC;oBACxC,KAAK,EAAE,gDAAgD;oBACvD,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,cAAc,EAAE;qBAC1D;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,2BAA2B;oBAC/B,KAAK,EAAE,oDAAoD;oBAC3D,OAAO,EAAE,EAAE;oBACX,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;aACF;YACD,KAAK,EAAE,yMAAyM;YAChN,UAAU,EAAE,EAAE;SACf;QACD;YACE,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,yBAAyB;oBAC7B,KAAK,EAAE,yBAAyB;oBAChC,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,cAAc,EAAE;qBAC1D;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,6BAA6B;oBACjC,KAAK,EAAE,6CAA6C;oBACpD,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,cAAc,EAAE;qBAC1D;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,gCAAgC;oBACpC,KAAK,EAAE,iDAAiD;oBACxD,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,cAAc,EAAE;qBAC1D;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;aACF;YACD,KAAK,EAAE,yLAAyL;YAChM,UAAU,EAAE,EAAE;SACf;QACD;YACE,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,mBAAmB;oBACvB,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,uEAAuE,EAAE,IAAI,EAAE,YAAY,EAAE;wBACrG,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,YAAY,EAAE;qBACnD;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,sBAAsB;oBAC1B,KAAK,EAAE,4BAA4B;oBACnC,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,YAAY,EAAE;qBAC3D;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;gBACD;oBACE,EAAE,EAAE,eAAe;oBACnB,KAAK,EAAE,gCAAgC;oBACvC,OAAO,EAAE,EAAE;oBACX,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;aACF;YACD,KAAK,EAAE,uYAAuY;YAC9Y,UAAU,EAAE,EAAE;SACf;QACD;YACE,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,mBAAmB;oBACvB,KAAK,EAAE,EAAE;oBACT,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC/C,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,YAAY,EAAE;wBACnD,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC3C,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC1C,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE;wBACtC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC1C,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;qBACzC;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;aACF;YACD,KAAK,EAAE,iIAAiI;YACxI,UAAU,EAAE,EAAE;SACf;QACD;YACE,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,mBAAmB;oBACvB,KAAK,EAAE,EAAE;oBACT,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC/C,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,YAAY,EAAE;wBACpD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC7C,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC1C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE;wBACvC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC1C,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;qBACzC;oBACD,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,KAAK,EAAE,EAAE;iBACV;aACF;YACD,KAAK,EAAE,8IAA8I;YACrJ,UAAU,EAAE,EAAE;SACf;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classifies how an SDL action verb interacts with the surrounding
|
|
3
|
+
* system. Mirrors the C# Packet.Ax25.Sdl.ActionKind enum and the kind
|
|
4
|
+
* groups in spec-sdl/actions.yaml.
|
|
5
|
+
*/
|
|
6
|
+
export type ActionKind = "signal_upper" | "signal_lower" | "processing" | "subroutine" | "internal_out";
|
|
7
|
+
/** Identifies which figure of which specification a page was transcribed from. */
|
|
8
|
+
export interface SdlSource {
|
|
9
|
+
readonly spec: string;
|
|
10
|
+
readonly figure: string;
|
|
11
|
+
/** Empty when no URL recorded. */
|
|
12
|
+
readonly url: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* One verb + kind pair along a transition or subroutine path. The
|
|
16
|
+
* verb is the canonical spelling from spec-sdl/actions.yaml; aliases
|
|
17
|
+
* are normalised at codegen time.
|
|
18
|
+
*/
|
|
19
|
+
export interface ActionStep {
|
|
20
|
+
readonly verb: string;
|
|
21
|
+
readonly kind: ActionKind;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Records a loop_while construct as a slice over the flat actions
|
|
25
|
+
* list. start/length describe the body; predicate is the boolean
|
|
26
|
+
* expression gating re-execution.
|
|
27
|
+
*/
|
|
28
|
+
export interface LoopRange {
|
|
29
|
+
readonly start: number;
|
|
30
|
+
readonly length: number;
|
|
31
|
+
readonly predicate: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* One citation supporting a transition or subroutine path. source is
|
|
35
|
+
* "spec_prose" or the key of a pinned_refs entry. Spec-prose
|
|
36
|
+
* citations populate cite/quote; code citations populate
|
|
37
|
+
* path/function/line.
|
|
38
|
+
*/
|
|
39
|
+
export interface ImplementationReference {
|
|
40
|
+
readonly source: string;
|
|
41
|
+
readonly cite: string;
|
|
42
|
+
readonly quote: string;
|
|
43
|
+
readonly path: string;
|
|
44
|
+
readonly function: string;
|
|
45
|
+
/** 0 = no line citation. */
|
|
46
|
+
readonly line: number;
|
|
47
|
+
readonly note: string;
|
|
48
|
+
}
|
|
49
|
+
/** One SDL transition column on a state-machine page. */
|
|
50
|
+
export interface TransitionSpec {
|
|
51
|
+
readonly id: string;
|
|
52
|
+
readonly from: string;
|
|
53
|
+
readonly on: string;
|
|
54
|
+
/** Empty when unguarded. */
|
|
55
|
+
readonly guard: string;
|
|
56
|
+
readonly actions: readonly ActionStep[];
|
|
57
|
+
readonly next: string;
|
|
58
|
+
readonly notes: string;
|
|
59
|
+
readonly references: readonly ImplementationReference[];
|
|
60
|
+
readonly loops: readonly LoopRange[];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* One path through a subroutine. Unlike a TransitionSpec there is no
|
|
64
|
+
* incoming event or destination state.
|
|
65
|
+
*/
|
|
66
|
+
export interface SubroutinePath {
|
|
67
|
+
readonly id: string;
|
|
68
|
+
readonly guard: string;
|
|
69
|
+
readonly actions: readonly ActionStep[];
|
|
70
|
+
readonly notes: string;
|
|
71
|
+
readonly references: readonly ImplementationReference[];
|
|
72
|
+
readonly loops: readonly LoopRange[];
|
|
73
|
+
}
|
|
74
|
+
/** One subroutine on a subroutine page. */
|
|
75
|
+
export interface SubroutineSpec {
|
|
76
|
+
readonly name: string;
|
|
77
|
+
readonly paths: readonly SubroutinePath[];
|
|
78
|
+
readonly notes: string;
|
|
79
|
+
readonly references: readonly ImplementationReference[];
|
|
80
|
+
}
|
|
81
|
+
/** One generated state-machine page (figc4.1 / 4.2 / 4.3 / 4.4 / 4.6 etc.). */
|
|
82
|
+
export interface StatePage {
|
|
83
|
+
readonly machine: string;
|
|
84
|
+
readonly state: string;
|
|
85
|
+
readonly source: SdlSource;
|
|
86
|
+
readonly transitions: readonly TransitionSpec[];
|
|
87
|
+
}
|
|
88
|
+
/** One generated subroutine page (figc4.7). */
|
|
89
|
+
export interface SubroutinesPage {
|
|
90
|
+
readonly machine: string;
|
|
91
|
+
readonly source: SdlSource;
|
|
92
|
+
readonly subroutines: readonly SubroutineSpec[];
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ax25sdl/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Hand-written runtime types for the ax25sdl package. The .g.ts files
|
|
2
|
+
// in this directory import from this module; do not regenerate it.
|
|
3
|
+
//
|
|
4
|
+
// Empty-string and zero-int conventions stand in for nullable fields
|
|
5
|
+
// throughout, to keep generated object literals readable. A guard of
|
|
6
|
+
// "" means "no guard"; a line of 0 in an ImplementationReference means
|
|
7
|
+
// "no line citation"; etc. Consumers should treat empty values as
|
|
8
|
+
// absence.
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ax25sdl/types.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,mEAAmE;AACnE,EAAE;AACF,qEAAqE;AACrE,qEAAqE;AACrE,uEAAuE;AACvE,kEAAkE;AAClE,WAAW"}
|