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.
Files changed (58) hide show
  1. package/README.md +59 -0
  2. package/dist/ax25sdl/awaiting_connection.g.d.ts +7 -0
  3. package/dist/ax25sdl/awaiting_connection.g.d.ts.map +1 -0
  4. package/dist/ax25sdl/awaiting_connection.g.js +427 -0
  5. package/dist/ax25sdl/awaiting_connection.g.js.map +1 -0
  6. package/dist/ax25sdl/awaiting_connection.g.test.d.ts +2 -0
  7. package/dist/ax25sdl/awaiting_connection.g.test.d.ts.map +1 -0
  8. package/dist/ax25sdl/awaiting_connection.g.test.js +345 -0
  9. package/dist/ax25sdl/awaiting_connection.g.test.js.map +1 -0
  10. package/dist/ax25sdl/awaiting_release.g.d.ts +7 -0
  11. package/dist/ax25sdl/awaiting_release.g.d.ts.map +1 -0
  12. package/dist/ax25sdl/awaiting_release.g.js +344 -0
  13. package/dist/ax25sdl/awaiting_release.g.js.map +1 -0
  14. package/dist/ax25sdl/awaiting_release.g.test.d.ts +2 -0
  15. package/dist/ax25sdl/awaiting_release.g.test.d.ts.map +1 -0
  16. package/dist/ax25sdl/awaiting_release.g.test.js +255 -0
  17. package/dist/ax25sdl/awaiting_release.g.test.js.map +1 -0
  18. package/dist/ax25sdl/awaiting_v22_connection.g.d.ts +7 -0
  19. package/dist/ax25sdl/awaiting_v22_connection.g.d.ts.map +1 -0
  20. package/dist/ax25sdl/awaiting_v22_connection.g.js +428 -0
  21. package/dist/ax25sdl/awaiting_v22_connection.g.js.map +1 -0
  22. package/dist/ax25sdl/awaiting_v22_connection.g.test.d.ts +2 -0
  23. package/dist/ax25sdl/awaiting_v22_connection.g.test.d.ts.map +1 -0
  24. package/dist/ax25sdl/awaiting_v22_connection.g.test.js +372 -0
  25. package/dist/ax25sdl/awaiting_v22_connection.g.test.js.map +1 -0
  26. package/dist/ax25sdl/connected.g.d.ts +7 -0
  27. package/dist/ax25sdl/connected.g.d.ts.map +1 -0
  28. package/dist/ax25sdl/connected.g.js +1456 -0
  29. package/dist/ax25sdl/connected.g.js.map +1 -0
  30. package/dist/ax25sdl/connected.g.test.d.ts +2 -0
  31. package/dist/ax25sdl/connected.g.test.d.ts.map +1 -0
  32. package/dist/ax25sdl/connected.g.test.js +1313 -0
  33. package/dist/ax25sdl/connected.g.test.js.map +1 -0
  34. package/dist/ax25sdl/disconnected.g.d.ts +7 -0
  35. package/dist/ax25sdl/disconnected.g.d.ts.map +1 -0
  36. package/dist/ax25sdl/disconnected.g.js +340 -0
  37. package/dist/ax25sdl/disconnected.g.js.map +1 -0
  38. package/dist/ax25sdl/disconnected.g.test.d.ts +2 -0
  39. package/dist/ax25sdl/disconnected.g.test.d.ts.map +1 -0
  40. package/dist/ax25sdl/disconnected.g.test.js +266 -0
  41. package/dist/ax25sdl/disconnected.g.test.js.map +1 -0
  42. package/dist/ax25sdl/index.d.ts +8 -0
  43. package/dist/ax25sdl/index.d.ts.map +1 -0
  44. package/dist/ax25sdl/index.js +10 -0
  45. package/dist/ax25sdl/index.js.map +1 -0
  46. package/dist/ax25sdl/sdl.test.d.ts +2 -0
  47. package/dist/ax25sdl/sdl.test.d.ts.map +1 -0
  48. package/dist/ax25sdl/sdl.test.js +47 -0
  49. package/dist/ax25sdl/sdl.test.js.map +1 -0
  50. package/dist/ax25sdl/subroutines.g.d.ts +7 -0
  51. package/dist/ax25sdl/subroutines.g.d.ts.map +1 -0
  52. package/dist/ax25sdl/subroutines.g.js +497 -0
  53. package/dist/ax25sdl/subroutines.g.js.map +1 -0
  54. package/dist/ax25sdl/types.d.ts +94 -0
  55. package/dist/ax25sdl/types.d.ts.map +1 -0
  56. package/dist/ax25sdl/types.js +10 -0
  57. package/dist/ax25sdl/types.js.map +1 -0
  58. package/package.json +46 -0
@@ -0,0 +1,344 @@
1
+ // Code generated by tools/Packet.Sdl.CodeGen from spec-sdl/data-link/awaiting_release.sdl.yaml.
2
+ // DO NOT EDIT. Run `dotnet run --project tools/Packet.Sdl.CodeGen` to regenerate.
3
+ /**
4
+ * SDL transitions for the AwaitingRelease state of the data_link machine.
5
+ * Source: ax.25.2.2.4_Oct_25, figure figc4.3.
6
+ */
7
+ export const DataLinkAwaitingRelease = {
8
+ machine: "data_link",
9
+ state: "AwaitingRelease",
10
+ source: { spec: "ax.25.2.2.4_Oct_25", figure: "figc4.3", url: "https://raw.githubusercontent.com/packethacking/ax25spec/main/doc/media/figc4.3.png" },
11
+ transitions: [
12
+ {
13
+ id: "t01_dl_disconnect_request",
14
+ from: "AwaitingRelease",
15
+ on: "DL_DISCONNECT_request",
16
+ guard: "",
17
+ actions: [
18
+ { verb: "Expedited DM", kind: "signal_lower" },
19
+ ],
20
+ next: "AwaitingRelease",
21
+ notes: "Second DL-DISCONNECT from upper layer while already waiting for the\nfirst DISC's UA. Respond Expedited DM and keep waiting — upper layer\nasked again, so reaffirm refusal without forgetting we already have\na DISC outstanding.\n\nNOTE: all four implementations diverge from the figure here.\nrax25 transitions to Disconnected and stops T1 (with author erratum\ncomments at src/state.rs:1329/1332 questioning the \"expedited\"\nwording and missing PF bit); direwolf also transitions to state_0\nwith similar erratum comments; linbpq and Linux never re-enter the\nDL-DISCONNECT codepath in this state at all (one-shot release).\nCandidate upstream-spec issue: \"Expedited DM, stay\" looks unnatural.\n",
22
+ references: [
23
+ { source: "linbpq", cite: "", quote: "", path: "L4Code.c", function: "L4 disconnect handler (DISCPENDING setter)", line: 1112, note: "DL-DISCONNECT request from upper layer sets DISCPENDING when frames are still outstanding (line 1112); else jumps straight to L2STATE=4 and arms timer (line 1118). DIVERGES: no spec-style 'Expedited DM, stay' — LinBPQ does not loop a second DL-DISCONNECT once already disconnecting" },
24
+ { source: "direwolf", cite: "", quote: "", path: "src/ax25_link.c", function: "dl_disconnect_request", line: 1138, note: "case state_2_awaiting_release: builds DM (cr_res, p=0), lm_data_request at TQ_PRIO_0_HI (expedited). DIVERGES from figure — also stops T1, notifies app, enter_new_state(state_0_disconnected) rather than staying. Erratum at 1147-1148 questions 'expedited' wording; 1157: 'Shouldn't we inform the user when going to disconnected state? Notifying the application, here, is my own enhancement.'" },
25
+ { source: "rax25", cite: "", quote: "", path: "src/state.rs", function: "AwaitingRelease::disconnect", line: 1328, note: "Sends DM (pf=false) then transitions to Disconnected. Author erratum at 1329: '1998&2017 bug: What's an \"expedited\" DM?' and 1332: '1998&2017 bug: Doesn''t specify pf.' DIVERGES: spec says stay in AwaitingRelease; rax25 goes to Disconnected and stops T1" },
26
+ { source: "linux_oot", cite: "", quote: "", path: "net/ax25/af_ax25.c", function: "ax25_release", line: 1021, note: "release() handles user disconnect once via single AX25_STATE_1/STATE_2 case (sends DISC, calls ax25_disconnect). Linux socket layer does not re-enter STATE_2 from STATE_2 on user disconnect; figc4.3 expedited-DM-then-stay semantics absent" },
27
+ ],
28
+ loops: [],
29
+ },
30
+ {
31
+ id: "t02_t1_expiry_rc_eq_n2",
32
+ from: "AwaitingRelease",
33
+ on: "T1_expiry",
34
+ guard: "RC_eq_N2",
35
+ actions: [
36
+ { verb: "DL_ERROR_indication_G", kind: "signal_upper" },
37
+ { verb: "DL_DISCONNECT_indication", kind: "signal_upper" },
38
+ ],
39
+ next: "Disconnected",
40
+ notes: "Retry limit hit while awaiting UA for our DISC. Surface DL-ERROR(G)\n(no response to repeated command frame) and DL-DISCONNECT indication\nto upper layer, then drop to Disconnected.\n\nNOTE: all four implementations diverge on the error code.\nrax25 emits DlError::H (a different letter); direwolf only\ndw_printf's an error string; linbpq silently CLEAROUTLINKs; Linux\nreports ETIMEDOUT. The \"G\" code appears figure-authoritative.\n",
41
+ references: [
42
+ { source: "spec_prose", cite: "§6.3.4 ¶3", quote: "If a UA or DM response is not correctly received before T1 times out, the DISC frame is sent again and T1 is restarted. If this happens N2 times, the TNC enters the disconnected state.", path: "", function: "", line: 0, note: "" },
43
+ { source: "linbpq", cite: "", quote: "", path: "L2Code.c", function: "L2TIMEOUT", line: 3791, note: "L2STATE==4 branch: if L2RETRIES >= PORTN2 then CLEAROUTLINK (lines 3791-3799). No DL-ERROR(G) and no DL-DISCONNECT indication — InformPartner NORMALCLOSE happens via CLEAROUTLINK rather than a typed error code" },
44
+ { source: "direwolf", cite: "", quote: "", path: "src/ax25_link.c", function: "t1_expiry", line: 5489, note: "case state_2_awaiting_release with S->rc == S->n2_retry: notifies app of disconnect, enter_new_state(state_0_disconnected), dl_connection_terminated. No typed DL-ERROR(G) — error via dw_printf only" },
45
+ { source: "rax25", cite: "", quote: "", path: "src/state.rs", function: "AwaitingRelease::t1", line: 1311, note: "RC==N2 branch (lines 1311-1320). Stops T1 and T3, emits DlError::H, transitions to Disconnected. DIVERGES: spec calls for DL-ERROR(G); rax25 emits H. Missing explicit DL-DISCONNECT indication (only debug! log at 1312). Comment at 1313: '// The 1998 spec doesn''t say, but if we''re going disconnected, then there''s no need for timers.'" },
46
+ { source: "linux_oot", cite: "", quote: "", path: "net/ax25/ax25_std_timer.c", function: "ax25_std_t1timer_expiry", line: 144, note: "STATE_2 branch: if (n2count == n2) → ax25_send_control(DISC,P=1,COMMAND) then ax25_disconnect(ETIMEDOUT). DIVERGES: also retransmits DISC alongside disconnect, and surfaces ETIMEDOUT not DL-ERROR(G)" },
47
+ ],
48
+ loops: [],
49
+ },
50
+ {
51
+ id: "t03_t1_expiry_rc_neq_n2",
52
+ from: "AwaitingRelease",
53
+ on: "T1_expiry",
54
+ guard: "not RC_eq_N2",
55
+ actions: [
56
+ { verb: "RC := RC + 1", kind: "processing" },
57
+ { verb: "DISC (P = 1)", kind: "signal_lower" },
58
+ { verb: "Select_T1_Value", kind: "subroutine" },
59
+ { verb: "start_T1", kind: "processing" },
60
+ ],
61
+ next: "AwaitingRelease",
62
+ notes: "Below retry limit — bump RC, resend DISC with P=1, recalc T1V via\nSelect T1 Value, restart T1, keep waiting.\n",
63
+ references: [
64
+ { source: "spec_prose", cite: "§6.3.4 ¶3", quote: "If a UA or DM response is not correctly received before T1 times out, the DISC frame is sent again and T1 is restarted.", path: "", function: "", line: 0, note: "" },
65
+ { source: "linbpq", cite: "", quote: "", path: "L2Code.c", function: "L2TIMEOUT", line: 3802, note: "L2STATE==4, RC<N2: increments L2RETRIES (line 3789) and re-sends DISC|PFBIT (line 3802). DIVERGES: no Select_T1_Value algorithm — LINK->L2TIME is fixed PORTT1" },
66
+ { source: "direwolf", cite: "", quote: "", path: "src/ax25_link.c", function: "t1_expiry", line: 5496, note: "else branch: SET_RC(S->rc+1), build DISC cmd p=1, lm_data_request, select_t1_value(S), START_T1, 'stay in same state'. Matches figure" },
67
+ { source: "rax25", cite: "", quote: "", path: "src/state.rs", function: "AwaitingRelease::t1", line: 1321, note: "RC!=N2 branch (lines 1321-1324): increments rc, select_t1_value(), restarts T1, emits SendDisc { pf: true }. Matches figure" },
68
+ { source: "linux_oot", cite: "", quote: "", path: "net/ax25/ax25_std_timer.c", function: "ax25_std_t1timer_expiry", line: 149, note: "STATE_2 else branch: n2count++; ax25_send_control(AX25_DISC,POLLON,COMMAND); ax25_calculate_t1+ax25_start_t1timer at L173-174. Matches RC++, DISC(P=1), Select_T1_Value, start T1; stays in STATE_2" },
69
+ ],
70
+ loops: [],
71
+ },
72
+ {
73
+ id: "t04_ua_received_f_eq_1",
74
+ from: "AwaitingRelease",
75
+ on: "UA_received",
76
+ guard: "F_eq_1",
77
+ actions: [
78
+ { verb: "DL_DISCONNECT_confirm", kind: "signal_upper" },
79
+ { verb: "stop_T1", kind: "processing" },
80
+ ],
81
+ next: "Disconnected",
82
+ notes: "Peer acked our DISC with UA(F=1). Confirm to upper layer, stop T1,\ndrop to Disconnected. Happy path out of AwaitingRelease.\n",
83
+ references: [
84
+ { source: "spec_prose", cite: "§6.3.4 ¶2", quote: "After receiving a UA or DM response to a sent DISC command, the TNC cancels timer T1 and enters the disconnected state.", path: "", function: "", line: 0, note: "" },
85
+ { source: "linbpq", cite: "", quote: "", path: "L2Code.c", function: "L2_PROCESS (case UA)", line: 2129, note: "On UA in L2STATE==4: InformPartner(NORMALCLOSE) + hookL2SessionClosed + CLEAROUTLINK (lines 2129-2138). DIVERGES: LinBPQ does NOT check F=1 — accepts UA regardless. F-bit check at line 1977 only decides whether to cancel L2TIMER" },
86
+ { source: "direwolf", cite: "", quote: "", path: "src/ax25_link.c", function: "ua_frame", line: 4931, note: "case state_2_awaiting_release with if(f==1): notify disconnect, STOP_T1, enter_new_state(state_0_disconnected), dl_connection_terminated. Matches figure" },
87
+ { source: "rax25", cite: "", quote: "", path: "src/state.rs", function: "AwaitingRelease::ua", line: 1303, note: "When p.poll (F=1) true: stops T1, debug 'DL-DISCONNECT confirm', transitions to Disconnected. Matches figure" },
88
+ { source: "linux_oot", cite: "", quote: "", path: "net/ax25/ax25_std_in.c", function: "ax25_std_state2_machine", line: 116, note: "case AX25_DM/AX25_UA: if (pf) ax25_disconnect(ax25,0). DIVERGES: Linux collapses DM and UA into one branch and uses pf instead of distinct F bit" },
89
+ ],
90
+ loops: [],
91
+ },
92
+ {
93
+ id: "t05_ua_received_not_f_eq_1",
94
+ from: "AwaitingRelease",
95
+ on: "UA_received",
96
+ guard: "not F_eq_1",
97
+ actions: [
98
+ { verb: "DL_ERROR_indication_D", kind: "signal_upper" },
99
+ ],
100
+ next: "AwaitingRelease",
101
+ notes: "UA without F=1 isn't a valid response to our polled DISC —\nDL-ERROR(D), keep waiting for a properly-flagged UA or DM.\n\nNOTE: only direwolf and rax25 emit a typed DL-ERROR(D). linbpq and\nLinux don't check the F bit at all in this state.\n",
102
+ references: [
103
+ { source: "direwolf", cite: "", quote: "", path: "src/ax25_link.c", function: "ua_frame", line: 4939, note: "else branch logs 'AX.25 Protocol Error D: UA received without F=1 when SABM or DISC was sent P=1' and 'stay in same state'. Erratum at 4928: '2006 version is missing yes/no labels on this test. DL-ERROR Indication does not mention error D.' Matches figure" },
104
+ { source: "rax25", cite: "", quote: "", path: "src/state.rs", function: "AwaitingRelease::ua", line: 1300, note: "F=0 branch (lines 1300-1302) returns vec![Action::DlError(DlError::D)]. Matches figure" },
105
+ ],
106
+ loops: [],
107
+ },
108
+ {
109
+ id: "t06_all_other_primitives_from_upper_layer",
110
+ from: "AwaitingRelease",
111
+ on: "all_other_primitives__from_upper_layer",
112
+ guard: "",
113
+ actions: [],
114
+ next: "AwaitingRelease",
115
+ notes: "Catch-all for unhandled primitives drawn with d5\n\"Signal reception from upper layer\". No action — stay in\nAwaitingRelease.\n",
116
+ references: [
117
+ { source: "direwolf", cite: "", quote: "", path: "src/ax25_link.c", function: "data_request_good_size", line: 1457, note: "case state_0_disconnected/state_2_awaiting_release: 'Discard it.' via cdata_delete(txdata). Direwolf doesn't have a monolithic 'all other' switch but this is the clearest equivalent for DL-DATA-style primitives" },
118
+ ],
119
+ loops: [],
120
+ },
121
+ {
122
+ id: "t07_dl_unit_data_request",
123
+ from: "AwaitingRelease",
124
+ on: "DL_UNIT_DATA_request",
125
+ guard: "",
126
+ actions: [
127
+ { verb: "UI_command", kind: "signal_lower" },
128
+ ],
129
+ next: "AwaitingRelease",
130
+ notes: "Connectionless data even while waiting for release — send UI command,\nstay. Mirrors figc4.2's same column.\n",
131
+ references: [
132
+ { source: "spec_prose", cite: "§6.3.7", quote: "AX.25 uses a special frame for this operation, the Unnumbered Information (UI) frame.", path: "", function: "", line: 0, note: "" },
133
+ { source: "linux_oot", cite: "", quote: "", path: "net/ax25/af_ax25.c", function: "ax25_sendmsg", line: 1655, note: "SOCK_DGRAM path bypasses state machine: builds AX25_UI frame and ax25_queue_xmit at 1658. State-independent; works in any STATE_x including STATE_2" },
134
+ ],
135
+ loops: [],
136
+ },
137
+ {
138
+ id: "t08_all_other_primitives_from_lower_layer",
139
+ from: "AwaitingRelease",
140
+ on: "all_other_primitives__from_lower_layer",
141
+ guard: "",
142
+ actions: [],
143
+ next: "AwaitingRelease",
144
+ notes: "Catch-all for unhandled primitives drawn with d5\n\"Signal reception from Lower Layer\". No action — stay in\nAwaitingRelease.\n",
145
+ references: [
146
+ { source: "linbpq", cite: "", quote: "", path: "L2Code.c", function: "L2_PROCESS (default case)", line: 2203, note: "After state-4 UA/DM/FRMR handlers, switch default 'ANY OTHER - IGNORE' simply ReleaseBuffer (lines 2203-2207). Covers most 'other lower-layer primitives' in state 4" },
147
+ { source: "direwolf", cite: "", quote: "", path: "src/ax25_link.c", function: "frmr_frame", line: 5016, note: "frmr_frame case state_2_awaiting_release: 'Ignore it. Keep current state.' lm_seize_confirm at line 2218 also no-ops for state_2. Direwolf has no monolithic 'all other' switch — spread across per-frame handlers" },
148
+ { source: "linux_oot", cite: "", quote: "", path: "net/ax25/ax25_std_in.c", function: "ax25_std_state2_machine", line: 129, note: "default: break; covers unhandled frame types (FRMR, XID, TEST, SREJ) in STATE_2" },
149
+ ],
150
+ loops: [],
151
+ },
152
+ {
153
+ id: "t09_control_field_error",
154
+ from: "AwaitingRelease",
155
+ on: "control_field_error",
156
+ guard: "",
157
+ actions: [
158
+ { verb: "DL_ERROR_indication_L", kind: "signal_upper" },
159
+ ],
160
+ next: "AwaitingRelease",
161
+ notes: "Figure-authoritative DL-ERROR(L) emission. None of the four pinned\nimplementations emit a typed DL-ERROR(L) — unrecognised control\nfields are silently dropped.\n",
162
+ references: [],
163
+ loops: [],
164
+ },
165
+ {
166
+ id: "t10_info_not_permitted_in_frame",
167
+ from: "AwaitingRelease",
168
+ on: "info_not_permitted_in_frame",
169
+ guard: "",
170
+ actions: [
171
+ { verb: "DL_ERROR_indication_M", kind: "signal_upper" },
172
+ ],
173
+ next: "AwaitingRelease",
174
+ notes: "Figure-authoritative DL-ERROR(M) emission. No implementation\nsurfaces this error code.\n",
175
+ references: [],
176
+ loops: [],
177
+ },
178
+ {
179
+ id: "t11_u_or_s_frame_length_error",
180
+ from: "AwaitingRelease",
181
+ on: "u_or_s_frame_length_error",
182
+ guard: "",
183
+ actions: [
184
+ { verb: "DL_ERROR_indication_N", kind: "signal_upper" },
185
+ ],
186
+ next: "AwaitingRelease",
187
+ notes: "Figure-authoritative DL-ERROR(N) emission. No implementation\nsurfaces this error code; malformed frames are rejected earlier.\n",
188
+ references: [],
189
+ loops: [],
190
+ },
191
+ {
192
+ id: "t12_sabm_received",
193
+ from: "AwaitingRelease",
194
+ on: "SABM_received",
195
+ guard: "",
196
+ actions: [
197
+ { verb: "F := P", kind: "processing" },
198
+ { verb: "Expedited DM", kind: "signal_lower" },
199
+ ],
200
+ next: "AwaitingRelease",
201
+ notes: "Peer tried to (re)connect while we're tearing down — refuse with\nExpedited DM, stay in AwaitingRelease.\n",
202
+ references: [
203
+ { source: "linbpq", cite: "", quote: "", path: "L2Code.c", function: "L2LINKACTIVE (SABM branch)", line: 1252, note: "L2LINKACTIVE state-4 branch: L2SENDDM(PORT, Buffer, ADJBUFFER) and return (lines 1252-1256). L2SENDDM copies received P-bit into DM F-bit via L2SENDRESP, matching 'F:=P'" },
204
+ { source: "direwolf", cite: "", quote: "", path: "src/ax25_link.c", function: "sabm_e_frame", line: 4426, note: "case state_2_awaiting_release: build DM response with f=p (F:=P), lm_data_request at TQ_PRIO_0_HI (expedited), 'stay in state 2'. Matches figure. Erratum at 4428: 'Flow charts don''t list SABME for state 2. Probably just want to treat it the same as SABM here.'" },
205
+ { source: "linux_oot", cite: "", quote: "", path: "net/ax25/ax25_std_in.c", function: "ax25_std_state2_machine", line: 106, note: "case AX25_SABM/SABME share ax25_send_control(AX25_DM, pf, AX25_RESPONSE) — F:=P via pf passthrough. Not flagged 'expedited' but functionally identical" },
206
+ ],
207
+ loops: [],
208
+ },
209
+ {
210
+ id: "t13_sabme_received",
211
+ from: "AwaitingRelease",
212
+ on: "SABME_received",
213
+ guard: "",
214
+ actions: [
215
+ { verb: "F := P", kind: "processing" },
216
+ { verb: "Expedited DM", kind: "signal_lower" },
217
+ ],
218
+ next: "AwaitingRelease",
219
+ notes: "Same as t12 but for v2.2 SABME. Refuse with Expedited DM, stay.\n\nTriangulation: direwolf author at sabm_e_frame:4428 flagged that\nthe figure doesn't list SABME for state 2 — treats same as SABM.\nThe figure here (figc4.3) does include SABME as a separate column,\nwith identical behaviour.\n",
220
+ references: [
221
+ { source: "direwolf", cite: "", quote: "", path: "src/ax25_link.c", function: "sabm_e_frame", line: 4426, note: "Same state_2 branch as t12 — sabm_e_frame parameterised by 'extended' but state_2 path ignores it. Erratum at 4428 notes SABME not in figure for state 2; direwolf treats same as SABM" },
222
+ ],
223
+ loops: [],
224
+ },
225
+ {
226
+ id: "t14_disc_received",
227
+ from: "AwaitingRelease",
228
+ on: "DISC_received",
229
+ guard: "",
230
+ actions: [
231
+ { verb: "F := P", kind: "processing" },
232
+ { verb: "Expedited UA", kind: "signal_lower" },
233
+ ],
234
+ next: "AwaitingRelease",
235
+ notes: "Cross-DISC: peer also wants to disconnect. Acknowledge with\nExpedited UA, stay in AwaitingRelease until our own DISC gets\nits UA (or T1 retries out).\n\nDIVERGENCE: §6.3.4 ¶2 prose says \"After receiving a valid DISC\ncommand, the TNC sends a UA response frame and enters the\ndisconnected state\" — i.e. UA + go to Disconnected. The figure\nkeeps us in AwaitingRelease. linbpq and Linux follow the prose\n(UA + disconnect); direwolf alone follows the figure (UA, stay).\n§6.3.6.2 first sentence (\"If sent and received SABM(E) or DISC\ncommand frames are the same…both devices enter the indicated\nstate\") also conflicts with the figure on this branch.\n",
236
+ references: [
237
+ { source: "spec_prose", cite: "§6.3.4 ¶2", quote: "After receiving a valid DISC command, the TNC sends a UA response frame and enters the disconnected state.", path: "", function: "", line: 0, note: "" },
238
+ { source: "linbpq", cite: "", quote: "", path: "L2Code.c", function: "L2LINKACTIVE (DISC branch)", line: 1090, note: "DISC on active link unconditionally: InformPartner(NORMALCLOSE), hookL2SessionClosed, CLEAROUTLINK, L2SENDUA (1090-1100). UA sent (F:=P via L2SENDUA), but tears down link — DIVERGES from figc4.3 t14 (stays); matches spec prose" },
239
+ { source: "direwolf", cite: "", quote: "", path: "src/ax25_link.c", function: "disc_frame", line: 4544, note: "case state_2_awaiting_release: build UA response with f=p (F:=P), lm_data_request at TQ_PRIO_0_HI (expedited), 'keep current state, 2'. Matches figure" },
240
+ { source: "linux_oot", cite: "", quote: "", path: "net/ax25/ax25_std_in.c", function: "ax25_std_state2_machine", line: 111, note: "case AX25_DISC: ax25_send_control(AX25_UA, pf, AX25_RESPONSE); ax25_disconnect(ax25, 0). DIVERGES from figc4.3 (stays in AwaitingRelease); matches spec prose (enters Disconnected)" },
241
+ ],
242
+ loops: [],
243
+ },
244
+ {
245
+ id: "t15_dm_received_f_eq_1",
246
+ from: "AwaitingRelease",
247
+ on: "DM_received",
248
+ guard: "F_eq_1",
249
+ actions: [
250
+ { verb: "DL_DISCONNECT_confirm", kind: "signal_upper" },
251
+ { verb: "stop_T1", kind: "processing" },
252
+ ],
253
+ next: "Disconnected",
254
+ notes: "Peer responded DM(F=1) to our polled DISC — equivalent to UA(F=1)\nfor tear-down purposes. Confirm, stop T1, drop to Disconnected.\n\nDirewolf author erratum (dm_frame:4677): \"Original flow chart, page\n91, shows DL-CONNECT confirm. It should clearly be DISconnect rather\nthan Connect. 2006 has DISCONNECT *Indication*. Should it be\nindication or confirm? Not sure.\" figc4.3 here resolves it as\nDL-DISCONNECT *confirm*; 2006 prose had *indication*. The 1998\nfigure typo (CONNECT instead of DISCONNECT) is captured separately.\n",
255
+ references: [
256
+ { source: "spec_prose", cite: "§6.3.4 ¶2", quote: "After receiving a UA or DM response to a sent DISC command, the TNC cancels timer T1 and enters the disconnected state.", path: "", function: "", line: 0, note: "" },
257
+ { source: "linbpq", cite: "", quote: "", path: "L2Code.c", function: "L2_PROCESS (case DM)", line: 2145, note: "DM in case-DM block: line 2149 handles L2STATE==2 (connect refused); otherwise falls through (2155-2166) to InformPartner(LINKLOST) + CLEAROUTLINK. DIVERGES: no F-bit check — DM tears down regardless of F" },
258
+ { source: "direwolf", cite: "", quote: "", path: "src/ax25_link.c", function: "dm_frame", line: 4675, note: "case state_2_awaiting_release with if(f==1): DL-DISCONNECT confirm via server_link_terminated, STOP_T1, enter_new_state(state_0_disconnected). Erratum at 4677 captures spec ambiguity between CONNECT/DISCONNECT confirm vs indication" },
259
+ { source: "rax25", cite: "", quote: "", path: "src/state.rs", function: "AwaitingRelease::dm", line: 1293, note: "F=1 branch (lines 1293-1295): debug 'DL-DISCONNECT Confirm', stops T1, transitions to Disconnected. Matches figure" },
260
+ { source: "linux_oot", cite: "", quote: "", path: "net/ax25/ax25_std_in.c", function: "ax25_std_state2_machine", line: 116, note: "case AX25_DM/AX25_UA: if (pf) ax25_disconnect(ax25,0). Shared branch with UA F=1; ax25_disconnect stops timers and transitions to STATE_0" },
261
+ ],
262
+ loops: [],
263
+ },
264
+ {
265
+ id: "t16_dm_received_not_f_eq_1",
266
+ from: "AwaitingRelease",
267
+ on: "DM_received",
268
+ guard: "not F_eq_1",
269
+ actions: [],
270
+ next: "AwaitingRelease",
271
+ notes: "DM without F=1 isn't a response to our polled DISC — ignore, keep\nwaiting.\n",
272
+ references: [
273
+ { source: "direwolf", cite: "", quote: "", path: "src/ax25_link.c", function: "dm_frame", line: 4691, note: "else branch: '// keep current state.' — no action. Matches figure" },
274
+ { source: "rax25", cite: "", quote: "", path: "src/state.rs", function: "AwaitingRelease::dm", line: 1290, note: "F=0 branch (lines 1290-1292) returns vec![] (silent no-op). Matches figure" },
275
+ { source: "linux_oot", cite: "", quote: "", path: "net/ax25/ax25_std_in.c", function: "ax25_std_state2_machine", line: 118, note: "AX25_DM with pf==0 falls through if-guard without action; remains in STATE_2" },
276
+ ],
277
+ loops: [],
278
+ },
279
+ {
280
+ id: "t17_ui_received_p_eq_1",
281
+ from: "AwaitingRelease",
282
+ on: "UI_received",
283
+ guard: "P_eq_1",
284
+ actions: [
285
+ { verb: "UI_Check", kind: "subroutine" },
286
+ { verb: "DM (F = 1)", kind: "signal_lower" },
287
+ ],
288
+ next: "AwaitingRelease",
289
+ notes: "DIVERGENCE: §6.3.5 ¶3 explicitly EXCLUDES UI from the \"respond DM\"\nrule (\"Any TNC receiving a command frame other than a SABM(E) or\nUI frame with the P bit set to '1' responds with a DM frame...\"),\nyet figc4.3 shows UI(P=1) → DM(F=1). direwolf alone follows the\nfigure on this; linbpq/linux/rax25 follow the prose (no DM reply).\nFigure-authoritative here, but flagged as candidate spec issue.\n",
290
+ references: [
291
+ { source: "direwolf", cite: "", quote: "", path: "src/ax25_link.c", function: "ui_frame", line: 5116, note: "case state_2_awaiting_release inside 'if (cr == cr_cmd && pf == 1)': sends DM response with f=pf=1, lm_data_request. Direwolf does NOT perform UI_Check (no DL-DATA indication of UI payload to upper layer) — only the DM(F=1) reply. Partial match" },
292
+ ],
293
+ loops: [],
294
+ },
295
+ {
296
+ id: "t18_ui_received_not_p_eq_1",
297
+ from: "AwaitingRelease",
298
+ on: "UI_received",
299
+ guard: "not P_eq_1",
300
+ actions: [
301
+ { verb: "UI_Check", kind: "subroutine" },
302
+ ],
303
+ next: "AwaitingRelease",
304
+ notes: "",
305
+ references: [
306
+ { source: "spec_prose", cite: "§6.3.5 ¶3", quote: "The offending frame is ignored.", path: "", function: "", line: 0, note: "" },
307
+ ],
308
+ loops: [],
309
+ },
310
+ {
311
+ id: "t19_i_or_s_command_p_eq_1",
312
+ from: "AwaitingRelease",
313
+ on: "i_or_s_command_received",
314
+ guard: "P_eq_1",
315
+ actions: [
316
+ { verb: "DM (F = 1)", kind: "signal_lower" },
317
+ ],
318
+ next: "AwaitingRelease",
319
+ notes: "Direwolf erratum at rr_rnr_frame:3537-3541 (duplicated in rej/srej):\n\"RR, RNR, REJ, SREJ responses would fall under all other primitives.\nIn the original, we simply ignore it and stay in state 2. The 2006\nversion, page 94, says go into 1 awaiting connection state. That\nmakes no sense to me.\" — 2006 vs 1998 spec divergence.\n\nDirewolf srej_frame:4046 erratum: \"Based on X.25, I don't think\nSREJ can be a command\" — suggests the figure's enumeration of SREJ\nin the command-column is questionable.\n",
320
+ references: [
321
+ { source: "spec_prose", cite: "§6.3.5 ¶3", quote: "Any TNC receiving a command frame other than a SABM(E) or UI frame with the P bit set to '1' responds with a DM frame with the F bit set to '1'.", path: "", function: "", line: 0, note: "" },
322
+ { source: "direwolf", cite: "", quote: "", path: "src/ax25_link.c", function: "i_frame", line: 2634, note: "case state_2_awaiting_release: 'Logic from flow chart for I, RR, RNR, REJ, SREJ commands' — if (cr==cr_cmd && p==1) send DM response F=1. Same pattern in rr_rnr_frame:3524, rej_frame:3785, srej_frame:4039 (srej gated to no-op with erratum at 4046). Matches figure" },
323
+ { source: "linux_oot", cite: "", quote: "", path: "net/ax25/ax25_std_in.c", function: "ax25_std_state2_machine", line: 122, note: "case AX25_I/REJ/RNR/RR: if (pf) ax25_send_control(AX25_DM, AX25_POLLON, AX25_RESPONSE). Matches DM F=1. SREJ not in switch (folds to default)" },
324
+ ],
325
+ loops: [],
326
+ },
327
+ {
328
+ id: "t20_i_or_s_command_not_p_eq_1",
329
+ from: "AwaitingRelease",
330
+ on: "i_or_s_command_received",
331
+ guard: "not P_eq_1",
332
+ actions: [],
333
+ next: "AwaitingRelease",
334
+ notes: "",
335
+ references: [
336
+ { source: "linbpq", cite: "", quote: "", path: "L2Code.c", function: "L2_PROCESS (state<5 fallthrough)", line: 2203, note: "Same path as t19: I/S frames in state 4 silently dropped via default 'ANY OTHER - IGNORE'. Matches spec (no action) but for the wrong reason — linbpq doesn't inspect P bit" },
337
+ { source: "direwolf", cite: "", quote: "", path: "src/ax25_link.c", function: "i_frame", line: 2638, note: "Implicit else of (cr==cr_cmd && p==1) test in i_frame:2638, rr_rnr_frame:3528, rej_frame:3787, srej_frame:4055: falls out with no action. Matches figure" },
338
+ { source: "linux_oot", cite: "", quote: "", path: "net/ax25/ax25_std_in.c", function: "ax25_std_state2_machine", line: 126, note: "Same case AX25_I/REJ/RNR/RR at 122-127: if(pf) guard means pf==0 falls through with no action; remains in STATE_2" },
339
+ ],
340
+ loops: [],
341
+ },
342
+ ],
343
+ };
344
+ //# sourceMappingURL=awaiting_release.g.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"awaiting_release.g.js","sourceRoot":"","sources":["../../src/ax25sdl/awaiting_release.g.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=awaiting_release.g.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"awaiting_release.g.test.d.ts","sourceRoot":"","sources":["../../src/ax25sdl/awaiting_release.g.test.ts"],"names":[],"mappings":""}