Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4316 lines
105 KiB

  1. ;*
  2. ;*
  3. ;* Copyright (c) 1991 Microsoft Corporation
  4. ;* Copyright (c) 1991 Nokia Data Systems AB
  5. ;*
  6. ;* Module Name:
  7. ;*
  8. ;* llclan.fsm
  9. ;*
  10. ;* Abstract:
  11. ;*
  12. ;* This finite state machine defines ISO-HDLC ABM protocol, plus
  13. ;* 2 (REJ), 10 (modulo 128).
  14. ;* This same finite state machine has been defined in IBM
  15. ;* "Token-Ring Network: Architecture Reference".
  16. ;* The main differences from the IBM specification:
  17. ;* - XID and TEST handling have been removed, because it does
  18. ;* delong to IEEE 802.2 standard and DLC API support XID and TEST
  19. ;* frames only in the SAP level.
  20. ;* - The indications sent to the higher level have been specified
  21. ;* according to the IBM LAN Techical Refernce and IEEE 802.2
  22. ;* standard.
  23. ;*
  24. ;* THIS DEFINITION FILE IS COMPILED BY FSMX COMPILER TO C CODE!!!!
  25. ;*
  26. ;* Author:
  27. ;*
  28. ;* Antti Saarenheimo [o-anttis] 13-MAY-1991
  29. ;*
  30. ;* Revision History:
  31. ;* 26-MAY-1991 by o-anttis
  32. ;* - All XID and TEST stuff have been removed
  33. ;* - All IH (Inform Higher level) primitives have been changed
  34. ;* specific indications
  35. ;*
  36. [[Define]]
  37. ;* This name will be used as the prefix of all tables and states
  38. ;* produced by the FSM compiler
  39. Name = LanLlc
  40. ;-- Constants are used in action and condtion fields
  41. [Constants]
  42. ;-- First we have the action primitives
  43. IT1 = TimerStart( &pLink->T1 )
  44. TT1 = TimerStop( &pLink->T1 )
  45. RT1 = TimerStart( &pLink->T1 )
  46. CIT1 = TimerStartIf( &pLink->T1 )
  47. IT2 = TimerStart( &pLink->T2 )
  48. TT2 = TimerStop( &pLink->T2 )
  49. RT2 = TimerStart( &pLink->T2 )
  50. CIT2 = TimerStartIf( &pLink->T2 )
  51. ITi = TimerStart( &pLink->Ti )
  52. TTi = TimerStop( &pLink->Ti )
  53. RTi = TimerStart( &pLink->Ti )
  54. Update_Va = UpdateVa( pLink )
  55. Adjust_Ww = AdjustWw( pLink )
  56. Update_Va_Chkpt = UpdateVaChkpt( pLink )
  57. Disable Link Station = DisableLinkStation( pLink )
  58. Enable Link Station = EnableLinkStation( pLink )
  59. Start Send_Proc = EnableSendProcess( pLink )
  60. Stop Send_Proc = DisableSendProcess( pLink )
  61. Resend Packets = ResendPackets( pLink )
  62. Ignore_LPDU = Status = DLC_STATUS_IGNORE_FRAME
  63. Dsc_I-fld = Status = DLC_STATUS_DISCARD_INFO_FIELD
  64. Rcv_BTU = Status = STATUS_SUCCESS; pLink->Vr += 2
  65. [Queue_I_LPDU] = Status = STATUS_SUCCESS
  66. DefaultAction = Status = DLC_STATUS_NO_ACTION
  67. Logical Error = Status = DLC_STATUS_LINK_PROTOCOL_ERROR
  68. CONFIRM_CONNECT = EVENT_INDICATION( CONFIRM_CONNECT )
  69. CONFIRM_CONNECT_FAILED = EVENT_INDICATION( CONFIRM_CONNECT_FAILED )
  70. CONFIRM_DISCONNECT = EVENT_INDICATION( CONFIRM_DISCONNECT )
  71. INDICATE_LINK_LOST = EVENT_INDICATION( INDICATE_LINK_LOST )
  72. INDICATE_DM_DISC_RECEIVED = EVENT_INDICATION( INDICATE_DM_DISC_RECEIVED )
  73. INDICATE_FRMR_RECEIVED = EVENT_INDICATION( INDICATE_FRMR_RECEIVED )
  74. INDICATE_FRMR_SENT = EVENT_INDICATION( INDICATE_FRMR_SENT )
  75. INDICATE_CONNECT_REQUEST = EVENT_INDICATION( INDICATE_CONNECT_REQUEST )
  76. INDICATE_RESET = EVENT_INDICATION( INDICATE_RESET )
  77. INDICATE_REMOTE_BUSY = EVENT_INDICATION( INDICATE_REMOTE_BUSY )
  78. INDICATE_REMOTE_READY = EVENT_INDICATION( INDICATE_REMOTE_READY )
  79. INDICATE_TI_TIMER_EXPIRED = EVENT_INDICATION( INDICATE_TI_TIMER_EXPIRED )
  80. ;-- Some Actions want to sent two events or frame. Then we will
  81. ;-- queue the first one immediately and save the second one to
  82. ;-- the stack.
  83. Indicate = Indicate
  84. Send_RNR_c = SEND_RNR_CMD
  85. Send_RR_c = SEND_RR_CMD
  86. ;-- Precompiler replaces %c characters by the actual value
  87. [I_c] = DLC_I_COMMAND
  88. [REJ_r] = DLC_REJ_RESPONSE
  89. [RNR_c] = DLC_RNR_COMMAND
  90. [RNR_r] = DLC_RNR_RESPONSE
  91. [RR_c] = DLC_RR_COMMAND
  92. [RR_r] = DLC_RR_RESPONSE
  93. [DISC] = DLC_DISC
  94. [DM] = DLC_DM
  95. [FRMR] = DLC_FRMR
  96. [SABME] = DLC_SABME
  97. [UA] = DLC_UA
  98. [Send_ACK] = SEND_ACK( pLink )
  99. ;-- Constant enumerations of some variables
  100. 01000 = 0x08
  101. 01100 = 0x0c
  102. 00010 = 0x02
  103. 00001 = 0x01
  104. ;-- Vi
  105. LIp = LOCAL_INIT_PENDING
  106. RIp = REMOTE_INIT_PENDING
  107. LRIp = (REMOTE_INIT_PENDING | LOCAL_INIT_PENDING)
  108. Op = OPER_MODE_PENDING
  109. ISp = IS_FRAME_PENDING
  110. ;-- Vb
  111. Lb = STATE_LOCAL_BUSY
  112. Rb = STATE_REMOTE_BUSY
  113. LRb = (STATE_LOCAL_BUSY | STATE_REMOTE_BUSY)
  114. DISCp = STACKED_DISCp_CMD
  115. [Synonymes]
  116. ;-- The poll/final or the command/response bit has not been set
  117. ;-- in all inputs. We must covert all inputs to excact commands
  118. FRMR = FRMR0|FRMR1
  119. DISC = DISC0|DISC1
  120. DM = DM0|DM1
  121. SABME = SABME0|SABME1
  122. UA = UA0|UA1
  123. I_c = IS_I_c0|IS_I_c1|OS_I_c0|OS_I_c1
  124. I_r = IS_I_r0|IS_I_r1|OS_I_r0|OS_I_r1
  125. I_c0 = IS_I_c0|OS_I_c0
  126. I_c1 = IS_I_c1|OS_I_c1
  127. I_r0 = IS_I_r0|OS_I_r0
  128. I_r1 = IS_I_r1|OS_I_r1
  129. IS_I = IS_I_r0|IS_I_r1|IS_I_c0|IS_I_c1
  130. OS_I = OS_I_r0|OS_I_r1|OS_I_c0|OS_I_c1
  131. REJ = REJ_c0|REJ_c1|REJ_r0|REJ_r1
  132. REJ_c = REJ_c0|REJ_c1
  133. REJ_r = REJ_r0|REJ_r1
  134. RNR = RNR_c0|RNR_c1|RNR_r0|RNR_r1
  135. RNR_c = RNR_c0|RNR_c1
  136. RNR_r = RNR_r0|RNR_r1
  137. RR = RR_c0|RR_c1|RR_r0|RR_r1
  138. RR_c = RR_c0|RR_c1
  139. RR_r = RR_r0|RR_r1
  140. LPDU_INVALID_r = LPDU_INVALID_r0|LPDU_INVALID_r1
  141. LPDU_INVALID_c = LPDU_INVALID_c0|LPDU_INVALID_c1
  142. LPDU_INVALID = LPDU_INVALID_r0|LPDU_INVALID_r1|LPDU_INVALID_c0|\
  143. LPDU_INVALID_c1
  144. [StateInputs]
  145. State = LINK_CLOSED
  146. State = DISCONNECTED
  147. State = LINK_OPENING
  148. State = DISCONNECTING
  149. State = FRMR_SENT
  150. State = LINK_OPENED
  151. State = LOCAL_BUSY
  152. State = REJECTION
  153. State = CHECKPOINTING
  154. State = CHKP_LOCAL_BUSY
  155. State = CHKP_REJECT
  156. State = RESETTING
  157. State = REMOTE_BUSY
  158. State = LOCAL_REMOTE_BUSY
  159. State = REJECT_LOCAL_BUSY
  160. State = REJECT_REMOTE_BUSY
  161. State = CHKP_REJECT_LOCAL_BUSY
  162. State = CHKP_CLEARING
  163. State = CHKP_REJECT_CLEARING
  164. State = REJECT_LOCAL_REMOTE_BUSY
  165. State = FRMR_RECEIVED
  166. Input = DISC0,DISC1
  167. Input = DM0,DM1
  168. Input = FRMR0,FRMR1
  169. Input = SABME0,SABME1
  170. Input = UA0,UA1
  171. Input = IS_I_r0,IS_I_r1,IS_I_c0,IS_I_c1
  172. Input = OS_I_r0,OS_I_r1,OS_I_c0,OS_I_c1
  173. Input = REJ_r0,REJ_r1,REJ_c0,REJ_c1
  174. Input = RNR_r0,RNR_r1,RNR_c0,RNR_c1
  175. Input = RR_r0,RR_r1,RR_c0,RR_c1
  176. Input = LPDU_INVALID_r0,LPDU_INVALID_r1,LPDU_INVALID_c0,LPDU_INVALID_c1
  177. Input = ACTIVATE_LS
  178. Input = DEACTIVATE_LS
  179. Input = ENTER_LCL_Busy
  180. Input = EXIT_LCL_Busy
  181. Input = SEND_I_POLL
  182. Input = SET_ABME
  183. Input = SET_ADM
  184. Input = Ti_Expired
  185. Input = T1_Expired
  186. Input = T2_Expired
  187. ;-- Only variables may be left side assign or a condition (!!!)
  188. ;-- All variables used in Action and Condition lines must be defined here
  189. [Variables]
  190. NewSt = pLink->State
  191. P_Ct = pLink->P_Ct
  192. Ia_Ct= pLink->Ia_Ct
  193. Ir_Ct= pLink->Ir_Ct
  194. Is_Ct= pLink->Is_Ct
  195. Nr = pLink->Nr
  196. ; Ns = pLink->Ns
  197. ; Nw = pLink->Nw
  198. N2 = pLink->N2
  199. N3 = pLink->N3
  200. Pf = pLink->Pf
  201. ; Ti = pLink->Ti
  202. ; T1 = pLink->T1
  203. ; T2 = pLink->T2
  204. ; TW = pLink->TW
  205. Va = pLink->Va
  206. Vb = pLink->Vb
  207. Vc = pLink->Vc
  208. Vi = pLink->Vi
  209. Vp = pLink->Vp
  210. Vr = pLink->Vr
  211. Vs = pLink->Vs
  212. Ww = pLink->Ww
  213. P = boolPollFinal
  214. VWXYZ = pLink->DlcStatus.FrmrData.Reason
  215. ;******************** LINK_CLOSED (01) ***********************
  216. [[State]]
  217. Name = LINK_CLOSED
  218. [Transition]
  219. Input = ACTIVATE_LS
  220. Predicate =
  221. Action = Enable Link Station; Vi = Vb = Vc = 0; ITi
  222. NewState = DISCONNECTED
  223. [Transition]
  224. Input = DEACTIVATE_LS|ENTER_LCL_Busy|EXIT_LCL_Busy
  225. Predicate =
  226. Action = Logical Error
  227. NewState =
  228. [Transition]
  229. Input = LPDU_INVALID
  230. Predicate =
  231. Action = Ignore_LPDU
  232. NewState =
  233. [Transition]
  234. ; Input = SEND_BTU|SET_ABME|SET_ADM|Ti_Expired|\
  235. Input = SET_ABME|SET_ADM|Ti_Expired|\
  236. T1_Expired|T2_Expired
  237. Predicate =
  238. Action = Logical Error
  239. NewState =
  240. [Transition]
  241. Input = DISC|DM|FRMR|SABME||UA|I_c|I_r|REJ|RNR|RR
  242. Predicate =
  243. Action = Ignore_LPDU
  244. NewState =
  245. ;******************** DISCONNECTED (02) ***********************
  246. [[State]]
  247. Name = DISCONNECTED
  248. [Transition]
  249. Input = ACTIVATE_LS
  250. Predicate =
  251. Action = Logical Error
  252. NewState =
  253. [Transition]
  254. Input = DEACTIVATE_LS
  255. Predicate =
  256. Action = Disable Link Station
  257. NewState = LINK_CLOSED
  258. [Transition]
  259. Input = ENTER_LCL_Busy
  260. Predicate =
  261. Action = Vb=Lb
  262. NewState =
  263. [Transition]
  264. Input = EXIT_LCL_Busy
  265. Predicate =
  266. Action = Vb=0
  267. NewState =
  268. [Transition]
  269. Input = LPDU_INVALID
  270. Predicate =
  271. Action = Ignore_LPDU
  272. NewState =
  273. ; [Transition]
  274. ; Input = SEND_BTU
  275. ; Predicate =
  276. ; Action = Logical Error
  277. ; NewState =
  278. [Transition]
  279. Input = SET_ABME
  280. Predicate = Vi==0
  281. Action = Vi=LIp; TTi; CIT1; P_Ct=N2; Is_Ct=N2; [SABME](1)
  282. NewState = LINK_OPENING
  283. [Transition]
  284. Input = SET_ABME
  285. Predicate = Vi==RIp
  286. Action = Vi=Op; Is_Ct=N2; Ir_Ct=N3; RTi; Va=Vs=Vr=Vp=0; [UA](Pf)
  287. NewState = LINK_OPENING
  288. [Transition]
  289. Input = SET_ADM
  290. Predicate = Vi==0
  291. Action = CONFIRM_DISCONNECT; RTi; [DM](0)
  292. NewState =
  293. [Transition]
  294. Input = SET_ADM
  295. Predicate = Vi==RIp
  296. Action = CONFIRM_DISCONNECT; Vi=0; RTi; [DM](Pf)
  297. NewState =
  298. [Transition]
  299. Input = Ti_Expired
  300. Predicate =
  301. Action = ITi
  302. NewState =
  303. [Transition]
  304. Input = T1_Expired
  305. Predicate = P_Ct==0
  306. Action = ;
  307. NewState =
  308. [Transition]
  309. Input = T2_Expired
  310. Predicate =
  311. Action = Logical Error
  312. NewState =
  313. [Transition]
  314. Input = DISC0|DISC1
  315. Predicate =
  316. Action = [DM](P)
  317. NewState =
  318. [Transition]
  319. Input = DM|FRMR
  320. Predicate =
  321. Action = Ignore_LPDU
  322. NewState =
  323. ;*
  324. ;* THIS IS NON-IBM EXTENSION!
  325. ;* We want to indicate just one remote connect request.
  326. ;* Otherwise the client would try to create more than one
  327. ;* link station for the same link.
  328. ;*
  329. [Transition]
  330. Input = SABME
  331. ; Predicate =
  332. Predicate = Vi==0
  333. Action = INDICATE_CONNECT_REQUEST; Vi=RIp; Pf=P; RTi
  334. NewState =
  335. [Transition]
  336. Input = UA
  337. Predicate =
  338. Action = Ignore_LPDU
  339. NewState =
  340. [Transition]
  341. Input = I_c0|I_r0
  342. Predicate =
  343. Action = Ignore_LPDU
  344. NewState =
  345. [Transition]
  346. Input = I_c1
  347. Predicate =
  348. Action = [DM](1)
  349. NewState =
  350. [Transition]
  351. Input = I_r1
  352. Predicate =
  353. Action = Ignore_LPDU
  354. NewState =
  355. [Transition]
  356. Input = REJ_c0|RNR_c0|RR_c0
  357. Predicate =
  358. Action = Ignore_LPDU
  359. NewState =
  360. [Transition]
  361. Input = REJ_c1|RNR_c1|RR_c1
  362. Predicate =
  363. Action = [DM](1)
  364. NewState =
  365. [Transition]
  366. Input = REJ_r|RNR_r|RR_r
  367. Predicate =
  368. Action = Ignore_LPDU
  369. NewState =
  370. ;******************** LINK_OPENING (03) ***********************
  371. [[State]]
  372. Name = LINK_OPENING
  373. [Transition]
  374. Input = ACTIVATE_LS | DEACTIVATE_LS
  375. Predicate =
  376. Action = Logical Error
  377. NewState =
  378. [Transition]
  379. Input = ENTER_LCL_Busy
  380. Predicate =
  381. Action = Vb=Lb
  382. NewState =
  383. [Transition]
  384. Input = EXIT_LCL_Busy
  385. Predicate =
  386. Action = Vb=0
  387. NewState =
  388. ; I can't allow this to happen, because the FRNR_SENT state might
  389. ; eventually end to an opened state => this indication would be wrong.
  390. ;
  391. ; [Transition]
  392. ; Input = LPDU_INVALID
  393. ; Predicate = Vi==Op, Nr!=0
  394. ; Action = INDICATE_FRMR_SENT, RTi; WXYZ=00001; [FRMR](P); \
  395. ; CONFIRM_CONNECT_FAILED;
  396. ; NewState = FRMR_SENT
  397. ;
  398. ; [Transition]
  399. ; Input = LPDU_INVALID
  400. ; Predicate = Vi!=Op
  401. ; Action = Ignore_LPDU
  402. ; NewState =
  403. [Transition]
  404. Input = LPDU_INVALID
  405. Predicate =
  406. Action = Ignore_LPDU
  407. NewState =
  408. [Transition]
  409. ; Input = SEND_BTU|SET_ABME
  410. Input = SET_ABME
  411. Predicate =
  412. Action = Logical Error
  413. NewState =
  414. [Transition]
  415. Input = SET_ADM
  416. Predicate = Vi==LIp || Vi==RIp
  417. Action = CONFIRM_CONNECT_FAILED; CONFIRM_DISCONNECT; Vi=0; TT1; \
  418. ITi; [DM](0)
  419. NewState = DISCONNECTED
  420. [Transition]
  421. Input = SET_ADM
  422. Predicate = Vi==Op
  423. Action = Vi=0; TTi; IT1; P_Ct=N2; [DISC](1)
  424. NewState = DISCONNECTING
  425. ;
  426. ; Yet another bug in the IBM state machine: We are forever stuck
  427. ; in the LINK_PENING state, if an open link station was reset
  428. ; any a remote busy state (when Vb!=0 && Vb=Lb).
  429. ; Vb==Lb must actually mean (Vb&Lb) != 0 and Vb==0 must mean
  430. ; (Vb&Lb) == 0
  431. [Transition]
  432. Input = Ti_Expired
  433. Predicate = (Vb&Lb)==0
  434. Action = CONFIRM_CONNECT; INDICATE_TI_TIMER_EXPIRED;\
  435. Vi=ISp; IT1; P_Ct=N2; [RR_c](1)
  436. NewState = CHECKPOINTING
  437. [Transition]
  438. Input = Ti_Expired
  439. Predicate = (Vb&Lb)!=0
  440. Action = CONFIRM_CONNECT; INDICATE_TI_TIMER_EXPIRED; \
  441. Vi=ISp; IT1; P_Ct=N2; [RNR_c](1)
  442. NewState = CHKP_LOCAL_BUSY
  443. [Transition]
  444. Input = T1_Expired
  445. Predicate = P_Ct==0, Vi==LIp
  446. Action = CONFIRM_CONNECT_FAILED; INDICATE_LINK_LOST; Vi=0; ITi
  447. NewState = DISCONNECTED
  448. [Transition]
  449. Input = T1_Expired
  450. Predicate = P_Ct!=0, Vi==LIp
  451. Action = IT1; P_Ct--; [SABME](1)
  452. NewState =
  453. [Transition]
  454. Input = T1_Expired
  455. Predicate = Vi==LRIp, (Vb&Lb)==0
  456. Action = CONFIRM_CONNECT; Va=Vs=Vr=Vp=0, Vi=ISp, Vc=0; IT1; P_Ct=N2; \
  457. Is_Ct=N2; Ir_Ct=N3; [RR_c](1)
  458. NewState = CHECKPOINTING
  459. [Transition]
  460. Input = T1_Expired
  461. Predicate = Vi==LRIp, (Vb&Lb)!=0
  462. Action = CONFIRM_CONNECT; Va=Vs=Vr=Vp=0; Vi=ISp; Vc=0; IT1; P_Ct=N2; \
  463. Is_Ct=N2; Ir_Ct=N3; [RNR_c](1)
  464. NewState = CHKP_LOCAL_BUSY
  465. [Transition]
  466. Input = T2_Expired
  467. Predicate =
  468. Action = Logical Error
  469. NewState =
  470. [Transition]
  471. Input = DISC0|DISC1
  472. Predicate =
  473. Action = CONFIRM_CONNECT_FAILED; INDICATE_DM_DISC_RECEIVED; Vi=0; \
  474. TT1; RTi; [DM](P)
  475. NewState = DISCONNECTED
  476. [Transition]
  477. Input = DM
  478. Predicate =
  479. Action = CONFIRM_CONNECT_FAILED; INDICATE_DM_DISC_RECEIVED; \
  480. Vi=0; TT1; RTi
  481. NewState = DISCONNECTED
  482. [Transition]
  483. Input = FRMR
  484. Predicate =
  485. Action = Ignore_LPDU
  486. NewState =
  487. [Transition]
  488. Input = SABME0|SABME1
  489. Predicate = Vi==Op
  490. Action = RTi; [UA](P)
  491. NewState =
  492. [Transition]
  493. Input = SABME0|SABME1
  494. Predicate = Vi==LIp || Vi==LRIp
  495. Action = Vi=LRIp; [UA](P)
  496. NewState =
  497. [Transition]
  498. Input = UA1
  499. Predicate = (Vi==LIp || Vi==LRIp), (Vb&Lb)==0
  500. Action = CONFIRM_CONNECT; Va=Vs=Vr=Vp=0; Vi=ISp; Vc=0; RT1; P_Ct=N2; \
  501. Is_Ct=N2; Ir_Ct=N3; [RR_c](1)
  502. NewState = CHECKPOINTING
  503. [Transition]
  504. Input = UA1
  505. Predicate = (Vi==LIp || Vi==LRIp), (Vb&Lb)!=0
  506. Action = CONFIRM_CONNECT; Va=Vs=Vr=Vp=0; Vi=ISp; Vc=0; RT1; P_Ct=N2; \
  507. Is_Ct=N2; Ir_Ct=N3; [RNR_c](1)
  508. NewState = CHKP_LOCAL_BUSY
  509. [Transition]
  510. Input = UA1
  511. Predicate = (Vi==Op)
  512. Action = Ignore_LPDU
  513. NewState =
  514. [Transition]
  515. Input = IS_I_c0|IS_I_r0
  516. Predicate = Vi==Op, Nr==0, (Vb&Lb)==0
  517. Action = CONFIRM_CONNECT; Vi=0; Rcv_BTU; RTi; Start Send_Proc; [Send_ACK]
  518. NewState = LINK_OPENED
  519. [Transition]
  520. Input = IS_I_c0|IS_I_r0
  521. Predicate = Vi==Op, Nr==0, (Vb&Lb)!=0
  522. Action = CONFIRM_CONNECT; Vi=0; Dsc_I-fld; RTi; Start Send_Proc; \
  523. [RNR_r](0)
  524. NewState = LOCAL_BUSY
  525. [Transition]
  526. Input = IS_I_c1
  527. Predicate = Vi==Op, Nr==0, (Vb&Lb)==0
  528. Action = CONFIRM_CONNECT; Vi=0; Rcv_BTU; RTi; Start Send_Proc; [RR_r](1)
  529. NewState = LINK_OPENED
  530. [Transition]
  531. Input = IS_I_c1
  532. Predicate = Vi==Op, Nr==0, (Vb&Lb)!=0
  533. Action = CONFIRM_CONNECT; Vi=0; Dsc_I-fld; RTi; Start Send_Proc;\
  534. [RNR_r](1)
  535. NewState = LOCAL_BUSY
  536. [Transition]
  537. Input = OS_I_c0|OS_I_r0
  538. Predicate = Vi==Op, Nr==0, (Vb&Lb)==0
  539. Action = CONFIRM_CONNECT; Vi=0; Dsc_I-fld; RTi; Start Send_Proc;\
  540. [REJ_r](0)
  541. NewState = REJECTION
  542. [Transition]
  543. Input = OS_I_c0|OS_I_r0
  544. Predicate = Vi==Op, Nr==0, (Vb&Lb)!=0
  545. Action = CONFIRM_CONNECT; Vi=0; Dsc_I-fld; RTi; Start Send_Proc;\
  546. [RNR_r](0)
  547. NewState = LOCAL_BUSY
  548. [Transition]
  549. Input = OS_I_c1
  550. Predicate = Vi==Op, Nr==0, (Vb&Lb)==0
  551. Action = CONFIRM_CONNECT; Vi=0; Dsc_I-fld; RTi; Start Send_Proc; \
  552. [REJ_r](1)
  553. NewState = REJECTION
  554. [Transition]
  555. Input = OS_I_c1
  556. Predicate = Vi==Op, Nr==0, (Vb&Lb)!=0
  557. Action = CONFIRM_CONNECT; Vi=0; Dsc_I-fld; RTi; Start Send_Proc;
  558. [RNR_r](1)
  559. NewState = LOCAL_BUSY
  560. [Transition]
  561. Input = RNR_c0|RNR_r0
  562. Predicate = Vi==Op, Nr==0, (Vb&Lb)==0
  563. Action = CONFIRM_CONNECT; INDICATE_REMOTE_BUSY; Vb=Rb; \
  564. Vi=0; RTi; Is_Ct=N2
  565. NewState = REMOTE_BUSY
  566. [Transition]
  567. Input = RNR_c0|RNR_r0
  568. Predicate = Vi==Op, Nr==0, (Vb&Lb)!=0
  569. Action = CONFIRM_CONNECT; Vb=LRb; Vi=0; RTi; Is_Ct=N2
  570. NewState = LOCAL_REMOTE_BUSY
  571. [Transition]
  572. Input = RNR_c1
  573. Predicate = Vi==Op, Nr==0, (Vb&Lb)==0
  574. Action = CONFIRM_CONNECT; INDICATE_REMOTE_BUSY; Vb=Rb; \
  575. Vi=0; RTi; Is_Ct=N2; [RR_r](1)
  576. NewState = REMOTE_BUSY
  577. [Transition]
  578. Input = RNR_c1
  579. Predicate = Vi==Op, Nr==0, (Vb&Lb)!=0
  580. Action = CONFIRM_CONNECT; Vb=LRb; Vi=0; RTi; Is_Ct=N2; [RNR_r](1)
  581. NewState = LOCAL_REMOTE_BUSY
  582. [Transition]
  583. Input = RR_c0|RR_r0
  584. Predicate = Vi==Op, Nr==0, (Vb&Lb)==0
  585. Action = CONFIRM_CONNECT; Vi=0; RTi; Start Send_Proc
  586. NewState = LINK_OPENED
  587. [Transition]
  588. Input = RR_c0|RR_r0
  589. Predicate = Vi==Op, Nr==0, (Vb&Lb)!=0
  590. Action = CONFIRM_CONNECT; Vi=0; RTi; Start Send_Proc
  591. NewState = LOCAL_BUSY
  592. [Transition]
  593. Input = RR_c1
  594. Predicate = Vi==Op, Nr==0, (Vb&Lb)==0
  595. Action = CONFIRM_CONNECT; Vi=0; RTi; Start Send_Proc; [RR_r](1)
  596. NewState = LINK_OPENED
  597. [Transition]
  598. Input = RR_c1
  599. Predicate = Vi==Op, Nr==0, (Vb&Lb)!=0
  600. Action = CONFIRM_CONNECT; Vi=0; RTi; Start Send_Proc; [RNR_r](1)
  601. NewState = LOCAL_BUSY
  602. [Transition]
  603. Input = REJ_c1
  604. Predicate = Vi==Op, Nr==0, (Vb&Lb)==0
  605. Action = CONFIRM_CONNECT; Vi=0; RTi; Start Send_Proc; [RR_r](1)
  606. NewState = LINK_OPENED
  607. [Transition]
  608. Input = REJ_c1
  609. Predicate = Vi==Op, Nr==0, (Vb&Lb)!=0
  610. Action = CONFIRM_CONNECT; Vi=0; RTi; Start Send_Proc; [RNR_r](1)
  611. NewState = LOCAL_BUSY
  612. [Transition]
  613. Input = REJ_c0|REJ_r0
  614. Predicate = Vi==Op, Nr==0, (Vb&Lb)==0
  615. Action = CONFIRM_CONNECT; Vi=0; RTi; Start Send_Proc
  616. NewState = LINK_OPENED
  617. [Transition]
  618. Input = REJ_c0|REJ_r0
  619. Predicate = Vi==Op, Nr==0, (Vb&Lb)!=0
  620. Action = CONFIRM_CONNECT; Vi=0; RTi; Start Send_Proc
  621. NewState = LOCAL_BUSY
  622. ;******************** DISCONNECTING (04) ***********************
  623. [[State]]
  624. Name = DISCONNECTING
  625. [Transition]
  626. Input = ACTIVATE_LS | DEACTIVATE_LS
  627. Predicate =
  628. Action = Logical Error
  629. NewState =
  630. [Transition]
  631. Input = ENTER_LCL_Busy
  632. Predicate =
  633. Action = Vb=Lb
  634. NewState =
  635. [Transition]
  636. Input = EXIT_LCL_Busy
  637. Predicate =
  638. Action = Vb=0
  639. NewState =
  640. [Transition]
  641. Input = LPDU_INVALID
  642. Predicate =
  643. Action = Ignore_LPDU
  644. NewState =
  645. [Transition]
  646. ; Input = SEND_BTU|SET_ABME|SET_ADM|Ti_Expired
  647. Input = SET_ABME|SET_ADM|Ti_Expired
  648. Predicate =
  649. Action = Logical Error
  650. NewState =
  651. [Transition]
  652. Input = T1_Expired
  653. Predicate = P_Ct==0
  654. Action = CONFIRM_DISCONNECT; ITi
  655. NewState = DISCONNECTED
  656. [Transition]
  657. Input = T1_Expired
  658. Predicate = P_Ct!=0
  659. Action = IT1; P_Ct--; [DISC](1)
  660. NewState =
  661. [Transition]
  662. Input = T2_Expired
  663. Predicate =
  664. Action = Logical Error
  665. NewState =
  666. [Transition]
  667. Input = DISC0|DISC1
  668. Predicate =
  669. Action = [UA](P)
  670. NewState =
  671. [Transition]
  672. Input = DM0|DM1
  673. Predicate =
  674. Action = CONFIRM_DISCONNECT; TT1; ITi
  675. NewState = DISCONNECTED
  676. [Transition]
  677. Input = FRMR
  678. Predicate =
  679. Action = Ignore_LPDU
  680. NewState =
  681. [Transition]
  682. Input = SABME0|SABME1
  683. Predicate =
  684. Action = CONFIRM_DISCONNECT; TT1; ITi; [DM](P)
  685. NewState = DISCONNECTED
  686. [Transition]
  687. Input = UA1
  688. Predicate =
  689. Action = CONFIRM_DISCONNECT; TT1; ITi
  690. NewState = DISCONNECTED
  691. [Transition]
  692. Input = I_c|I_r
  693. Predicate =
  694. Action = Ignore_LPDU
  695. NewState =
  696. [Transition]
  697. Input = REJ|RNR|RR
  698. Predicate =
  699. Action = Ignore_LPDU
  700. NewState =
  701. ;******************** FRMR_SENT (05) ***********************
  702. [[State]]
  703. Name = FRMR_SENT
  704. [Transition]
  705. Input = ACTIVATE_LS | DEACTIVATE_LS
  706. Predicate =
  707. Action = Logical Error
  708. NewState =
  709. [Transition]
  710. Input = ENTER_LCL_Busy
  711. Predicate =
  712. Action = Vb=Lb
  713. NewState =
  714. [Transition]
  715. Input = EXIT_LCL_Busy
  716. Predicate =
  717. Action = Vb=0
  718. NewState =
  719. [Transition]
  720. Input = LPDU_INVALID
  721. Predicate =
  722. Action = Ignore_LPDU
  723. NewState =
  724. ; [Transition]
  725. ; Input = SEND_BTU
  726. ; Predicate =
  727. ; Action = Logical Error
  728. ; NewState =
  729. [Transition]
  730. Input = SET_ABME
  731. Predicate =
  732. Action = TTi; IT1; P_Ct=N2; Vi=LIp; [SABME](1)
  733. NewState = LINK_OPENING
  734. [Transition]
  735. Input = SET_ADM
  736. Predicate =
  737. Action = TTi; IT1; P_Ct=N2; [DISC](1)
  738. NewState = DISCONNECTING
  739. [Transition]
  740. Input = Ti_Expired
  741. Predicate =
  742. Action = INDICATE_TI_TIMER_EXPIRED; ITi
  743. NewState =
  744. [Transition]
  745. Input = T1_Expired|T2_Expired
  746. Predicate =
  747. Action = Logical Error
  748. NewState =
  749. [Transition]
  750. Input = DISC0|DISC1
  751. Predicate =
  752. Action = INDICATE_DM_DISC_RECEIVED; RTi; [UA](P)
  753. NewState = DISCONNECTED
  754. [Transition]
  755. Input = DM0|DM1
  756. Predicate =
  757. Action = INDICATE_DM_DISC_RECEIVED; RTi
  758. NewState = DISCONNECTED
  759. [Transition]
  760. Input = FRMR
  761. Predicate =
  762. Action = INDICATE_FRMR_RECEIVED; P_Ct=N2; RTi
  763. NewState = FRMR_RECEIVED
  764. [Transition]
  765. Input = SABME
  766. Predicate =
  767. Action = INDICATE_RESET; Vi=RIp; Pf=P; RTi
  768. NewState = RESETTING
  769. [Transition]
  770. Input = UA
  771. Predicate =
  772. Action = Ignore_LPDU
  773. NewState =
  774. [Transition]
  775. Input = I_c0|I_c1
  776. Predicate =
  777. Action = INDICATE_FRMR_SENT; RTi; [FRMR](P)
  778. NewState =
  779. [Transition]
  780. Input = I_r0|I_r1
  781. Predicate =
  782. Action = Ignore_LPDU
  783. NewState =
  784. [Transition]
  785. Input = REJ_c0|REJ_c1|RNR_c0|RNR_c1|RR_c0|RR_c1
  786. Predicate =
  787. Action = INDICATE_FRMR_SENT; RTi; [FRMR](P)
  788. NewState =
  789. [Transition]
  790. Input = REJ_r0|REJ_r1|RNR_r0|RNR_r1|RR_r0|RR_r1
  791. Predicate =
  792. Action = Ignore_LPDU
  793. NewState =
  794. ;******************** LINK_OPENED (06) ***********************
  795. [[State]]
  796. Name = LINK_OPENED
  797. [Transition]
  798. Input = ACTIVATE_LS | DEACTIVATE_LS
  799. Predicate =
  800. Action = Logical Error
  801. NewState =
  802. [Transition]
  803. Input = ENTER_LCL_Busy
  804. Predicate =
  805. Action = Vb=Lb; TT2; Ir_Ct=N3; [RNR_r](0)
  806. NewState = LOCAL_BUSY
  807. [Transition]
  808. Input = EXIT_LCL_Busy
  809. Predicate =
  810. Action = Logical Error
  811. NewState =
  812. [Transition]
  813. Input = LPDU_INVALID_r | LPDU_INVALID_c0
  814. Predicate =
  815. Action = INDICATE_FRMR_SENT; TT1; TT2; RTi; VWXYZ=0x01; [FRMR](0)
  816. NewState = FRMR_SENT
  817. [Transition]
  818. Input = LPDU_INVALID_c1
  819. Predicate =
  820. Action = INDICATE_FRMR_SENT; TT1; TT2; RTi; VWXYZ=0x01; [FRMR](1)
  821. NewState = FRMR_SENT
  822. ; [Transition]
  823. ; Input = SEND_BTU
  824. ; Predicate =
  825. ; Action = [Queue_I_LPDU]
  826. ; NewState =
  827. [Transition]
  828. Input = SEND_I_POLL
  829. Predicate =
  830. Action = RT1; P_Ct=N2; Vp=Vs; Ir_Ct=N3; Is_Ct--
  831. NewState = CHECKPOINTING
  832. [Transition]
  833. Input = SET_ABME
  834. Predicate =
  835. Action = Logical Error
  836. NewState =
  837. [Transition]
  838. Input = SET_ADM
  839. Predicate =
  840. Action = TTi; RT1; P_Ct=N2; TT2; [DISC](1)
  841. NewState = DISCONNECTING
  842. [Transition]
  843. Input = Ti_Expired
  844. Predicate =
  845. Action = IT1; P_Ct=N2; TT2; Ir_Ct=N3; Stop Send_Proc; Vp=Vs; [RR_c](1)
  846. NewState = CHECKPOINTING
  847. [Transition]
  848. Input = T1_Expired
  849. Predicate = Is_Ct>0
  850. Action = IT1; P_Ct=N2; TT2; Ir_Ct=N3; Stop Send_Proc; Vp=Vs; [RR_c](1)
  851. NewState = CHECKPOINTING
  852. [Transition]
  853. Input = T1_Expired
  854. Predicate = Is_Ct<=0
  855. Action = INDICATE_LINK_LOST; TT2; P_Ct=N2; IT1; [DISC](1)
  856. NewState = DISCONNECTING
  857. [Transition]
  858. Input = T2_Expired
  859. Predicate =
  860. Action = Ir_Ct=N3; [RR_r](0)
  861. NewState =
  862. [Transition]
  863. Input = DISC0|DISC1
  864. Predicate =
  865. Action = INDICATE_DM_DISC_RECEIVED; TT1; RTi; TT2; [UA](P)
  866. NewState = DISCONNECTED
  867. [Transition]
  868. Input = DM0|DM1
  869. Predicate =
  870. Action = INDICATE_DM_DISC_RECEIVED; TT1; RTi; TT2
  871. NewState = DISCONNECTED
  872. [Transition]
  873. Input = FRMR
  874. Predicate =
  875. Action = INDICATE_FRMR_RECEIVED; TT1; RTi; P_Ct=N2; TT2
  876. NewState = FRMR_RECEIVED
  877. [Transition]
  878. Input = SABME
  879. Predicate =
  880. Action = INDICATE_RESET; Vi=RIp; Pf=P; TT1; RTi; TT2
  881. NewState = RESETTING
  882. [Transition]
  883. Input = UA
  884. Predicate =
  885. Action = INDICATE_FRMR_SENT; TT1; RTi; TT2; [FRMR](0)
  886. NewState = FRMR_SENT
  887. [Transition]
  888. Input = IS_I_c0|IS_I_r0|IS_I_r1
  889. Predicate =
  890. Action = Update_Va; Rcv_BTU; [Send_ACK]
  891. NewState =
  892. [Transition]
  893. Input = IS_I_c1
  894. Predicate =
  895. Action = Update_Va; Rcv_BTU; TT2; Ir_Ct=N3; [RR_r](1)
  896. NewState =
  897. [Transition]
  898. Input = OS_I_c0|OS_I_r0|OS_I_r1
  899. Predicate =
  900. Action = Update_Va; Dsc_I-fld; TT2; Ir_Ct=N3; [REJ_r](0)
  901. NewState = REJECTION
  902. [Transition]
  903. Input = OS_I_c1
  904. Predicate =
  905. Action = Update_Va; Dsc_I-fld; TT2; Ir_Ct=N3; [REJ_r](1)
  906. NewState = REJECTION
  907. [Transition]
  908. Input = REJ_c0 | REJ_r
  909. Predicate = Nr == Vs
  910. Action = Update_Va
  911. NewState =
  912. [Transition]
  913. Input = REJ_c0 | REJ_r
  914. Predicate = Nr != Vs
  915. Action = Resend Packets, Update_Va; Is_Ct--
  916. NewState =
  917. [Transition]
  918. Input = REJ_c1
  919. Predicate = Nr == Vs
  920. Action = Update_Va; TT2; [RR_r](1)
  921. NewState =
  922. [Transition]
  923. Input = REJ_c1
  924. Predicate = Nr != Vs
  925. Action = Resend Packets, Update_Va; TT2; Ir_Ct=N3; Is_Ct--;\
  926. [RR_r](1)
  927. NewState =
  928. [Transition]
  929. Input = RNR_c0|RNR_r0|RNR_r1
  930. Predicate =
  931. Action = INDICATE_REMOTE_BUSY; Update_Va; Vb=Rb, Is_Ct=N2; \
  932. Stop Send_Proc
  933. NewState = REMOTE_BUSY
  934. [Transition]
  935. Input = RNR_c1
  936. Predicate =
  937. Action = INDICATE_REMOTE_BUSY; Update_Va; Vb=Rb; TT2; Ir_Ct=N3; \
  938. Is_Ct=N2; Stop Send_Proc; [RR_r](1)
  939. NewState = REMOTE_BUSY
  940. [Transition]
  941. Input = RR_c0|RR_r0|RR_r1
  942. Predicate =
  943. Action = Update_Va
  944. NewState =
  945. [Transition]
  946. Input = RR_c1
  947. Predicate =
  948. Action = Update_Va; TT2; Ir_Ct=N3; [RR_r](1)
  949. NewState =
  950. ;******************** LOCAL_BUSY (07) ***********************
  951. [[State]]
  952. Name = LOCAL_BUSY
  953. [Transition]
  954. Input = ACTIVATE_LS | DEACTIVATE_LS | ENTER_LCL_Busy
  955. Predicate =
  956. Action = Logical Error
  957. NewState =
  958. [Transition]
  959. Input = EXIT_LCL_Busy
  960. Predicate =
  961. Action = Vb=0; TTi; RT1; P_Ct=N2; Vp=Vs; Stop Send_Proc; [RR_c](1)
  962. NewState = CHECKPOINTING
  963. [Transition]
  964. Input = LPDU_INVALID_r | LPDU_INVALID_c0
  965. Predicate =
  966. Action = INDICATE_FRMR_SENT; TT1; RTi; VWXYZ=0x01; [FRMR](0)
  967. NewState = FRMR_SENT
  968. [Transition]
  969. Input = LPDU_INVALID_c1
  970. Predicate =
  971. Action = INDICATE_FRMR_SENT; TT1; RTi; VWXYZ=0x01; [FRMR](1)
  972. NewState = FRMR_SENT
  973. ; [Transition]
  974. ; Input = SEND_BTU
  975. ; Predicate =
  976. ; Action = [Queue_I_LPDU]
  977. ; NewState =
  978. [Transition]
  979. Input = SEND_I_POLL
  980. Predicate =
  981. Action = RT1; P_Ct=N2; Vp=Vs; Ir_Ct=N3; Is_Ct--
  982. NewState = CHKP_LOCAL_BUSY
  983. [Transition]
  984. Input = SET_ABME
  985. Predicate =
  986. Action = Logical Error
  987. NewState =
  988. [Transition]
  989. Input = SET_ADM
  990. Predicate =
  991. Action = TTi; RT1; P_Ct=N2; [DISC](1)
  992. NewState = DISCONNECTING
  993. [Transition]
  994. Input = Ti_Expired
  995. Predicate =
  996. Action = IT1; P_Ct=N2; Stop Send_Proc; Vp=Vs; [RNR_c](1)
  997. NewState = CHKP_LOCAL_BUSY
  998. [Transition]
  999. Input = T1_Expired
  1000. Predicate = Is_Ct>0
  1001. Action = IT1; P_Ct=N2; Stop Send_Proc; Vp=Vs; [RNR_c](1)
  1002. NewState = CHKP_LOCAL_BUSY
  1003. [Transition]
  1004. Input = T1_Expired
  1005. Predicate = Is_Ct<=0
  1006. Action = TT2; P_Ct=N2; IT1; [DISC](1)
  1007. NewState = DISCONNECTING
  1008. [Transition]
  1009. Input = T2_Expired
  1010. Predicate =
  1011. Action = Logical Error
  1012. NewState =
  1013. [Transition]
  1014. Input = DISC0|DISC1
  1015. Predicate =
  1016. Action = INDICATE_DM_DISC_RECEIVED; TT1; RTi; [UA](P)
  1017. NewState = DISCONNECTED
  1018. [Transition]
  1019. Input = DM0|DM1
  1020. Predicate =
  1021. Action = INDICATE_DM_DISC_RECEIVED; TT1; RTi
  1022. NewState = DISCONNECTED
  1023. [Transition]
  1024. Input = FRMR
  1025. Predicate =
  1026. Action = INDICATE_FRMR_RECEIVED; TT1; RTi; P_Ct=N2
  1027. NewState = FRMR_RECEIVED
  1028. [Transition]
  1029. Input = SABME
  1030. Predicate =
  1031. Action = INDICATE_RESET; Vi=RIp; Pf=P; TT1; RTi
  1032. NewState = RESETTING
  1033. [Transition]
  1034. Input = UA
  1035. Predicate =
  1036. Action = INDICATE_FRMR_SENT; TT1; RTi; VWXYZ=0x08; [FRMR](0)
  1037. NewState = FRMR_SENT
  1038. [Transition]
  1039. Input = IS_I_c0|IS_I_r0|IS_I_r1
  1040. Predicate =
  1041. Action = Update_Va; Dsc_I-fld; [RNR_r](0)
  1042. NewState =
  1043. [Transition]
  1044. Input = IS_I_c1
  1045. Predicate =
  1046. Action = Update_Va; Dsc_I-fld; [RNR_r](1)
  1047. NewState =
  1048. [Transition]
  1049. Input = OS_I_c0|OS_I_r0|OS_I_r1
  1050. Predicate =
  1051. Action = Update_Va; Dsc_I-fld; [RNR_r](0)
  1052. NewState =
  1053. [Transition]
  1054. Input = OS_I_c1
  1055. Predicate =
  1056. Action = Update_Va; Dsc_I-fld; [RNR_r](1)
  1057. NewState =
  1058. [Transition]
  1059. Input = REJ_c0 | REJ_r
  1060. Predicate = Nr == Vs
  1061. Action = Update_Va
  1062. NewState =
  1063. [Transition]
  1064. Input = REJ_c0 | REJ_r
  1065. Predicate = Nr != Vs
  1066. Action = Resend Packets, Update_Va; Is_Ct--
  1067. NewState =
  1068. [Transition]
  1069. Input = REJ_c1
  1070. Predicate = Nr == Vs
  1071. Action = Update_Va; TT2; [RR_r](1)
  1072. NewState =
  1073. [Transition]
  1074. Input = REJ_c1
  1075. Predicate = Nr != Vs
  1076. Action = Resend Packets, Update_Va; Is_Ct--; [RNR_r](1)
  1077. NewState =
  1078. [Transition]
  1079. Input = RNR_c0|RNR_r0|RNR_r1
  1080. Predicate =
  1081. Action = Update_Va; Vb=LRb; Is_Ct=N2; Stop Send_Proc
  1082. NewState = LOCAL_REMOTE_BUSY
  1083. [Transition]
  1084. Input = RNR_c1
  1085. Predicate =
  1086. Action = Update_Va; Vb=LRb; Is_Ct=N2; Stop Send_Proc; [RNR_r](1)
  1087. NewState = LOCAL_REMOTE_BUSY
  1088. [Transition]
  1089. Input = RR_c0|RR_r0|RR_r1
  1090. Predicate =
  1091. Action = Update_Va
  1092. NewState =
  1093. [Transition]
  1094. Input = RR_c1
  1095. Predicate =
  1096. Action = Update_Va; [RNR_r](1)
  1097. NewState =
  1098. ;******************** REJECTION (08) ***********************
  1099. [[State]]
  1100. Name = REJECTION
  1101. [Transition]
  1102. Input = ACTIVATE_LS | DEACTIVATE_LS
  1103. Predicate =
  1104. Action = Logical Error
  1105. NewState =
  1106. [Transition]
  1107. Input = ENTER_LCL_Busy
  1108. Predicate =
  1109. Action = Vb=Lb; [RNR_r](0)
  1110. NewState = REJECT_LOCAL_BUSY
  1111. [Transition]
  1112. Input = EXIT_LCL_Busy
  1113. Predicate =
  1114. Action = Logical Error
  1115. NewState =
  1116. [Transition]
  1117. Input = LPDU_INVALID_r | LPDU_INVALID_c0
  1118. Predicate =
  1119. Action = INDICATE_FRMR_SENT; TT1; RTi; VWXYZ=00001; [FRMR](0)
  1120. NewState = FRMR_SENT
  1121. [Transition]
  1122. Input = LPDU_INVALID_c1
  1123. Predicate =
  1124. Action = INDICATE_FRMR_SENT; TT1; RTi; VWXYZ=00001; [FRMR](1)
  1125. NewState = FRMR_SENT
  1126. ; [Transition]
  1127. ; Input = SEND_BTU
  1128. ; Predicate =
  1129. ; Action = [Queue_I_LPDU]
  1130. ; NewState =
  1131. [Transition]
  1132. Input = SEND_I_POLL
  1133. Predicate =
  1134. Action = RT1; P_Ct=N2; Vp=Vs; Is_Ct--
  1135. NewState = CHKP_REJECT
  1136. [Transition]
  1137. Input = SET_ABME
  1138. Predicate =
  1139. Action = Logical Error
  1140. NewState =
  1141. [Transition]
  1142. Input = SET_ADM
  1143. Predicate =
  1144. Action = TTi; RT1; P_Ct=N2; [DISC](1)
  1145. NewState = DISCONNECTING
  1146. [Transition]
  1147. Input = Ti_Expired
  1148. Predicate =
  1149. Action = IT1; P_Ct=N2; Stop Send_Proc; Vp=Vs; [RR_c](1)
  1150. NewState = CHKP_REJECT
  1151. [Transition]
  1152. Input = T1_Expired
  1153. Predicate = Is_Ct>0
  1154. Action = IT1; P_Ct=N2; Stop Send_Proc; Vp=Vs; [RR_c](1)
  1155. NewState = CHKP_REJECT
  1156. [Transition]
  1157. Input = T1_Expired
  1158. Predicate = P_Ct<=0
  1159. Action = P_Ct=N2; IT1; [DISC](1)
  1160. NewState = DISCONNECTING
  1161. [Transition]
  1162. Input = T2_Expired
  1163. Predicate =
  1164. Action = Logical Error
  1165. NewState =
  1166. [Transition]
  1167. Input = DISC0|DISC1
  1168. Predicate =
  1169. Action = INDICATE_DM_DISC_RECEIVED; TT1; RTi; [UA](P)
  1170. NewState = DISCONNECTED
  1171. [Transition]
  1172. Input = DM0|DM1
  1173. Predicate =
  1174. Action = INDICATE_DM_DISC_RECEIVED; TT1; RTi
  1175. NewState = DISCONNECTED
  1176. [Transition]
  1177. Input = FRMR
  1178. Predicate =
  1179. Action = INDICATE_FRMR_RECEIVED; TT1; RTi; P_Ct=N2
  1180. NewState = FRMR_RECEIVED
  1181. [Transition]
  1182. Input = SABME
  1183. Predicate =
  1184. Action = INDICATE_RESET; Vi=RIp; Pf=P; TT1; RTi
  1185. NewState = RESETTING
  1186. [Transition]
  1187. Input = UA
  1188. Predicate =
  1189. Action = INDICATE_FRMR_SENT; TT1; RTi; [FRMR](0)
  1190. NewState = FRMR_SENT
  1191. [Transition]
  1192. Input = IS_I_c0|IS_I_r0|IS_I_r1
  1193. Predicate =
  1194. Action = Update_Va; Rcv_BTU; [Send_ACK]
  1195. NewState = LINK_OPENED
  1196. [Transition]
  1197. Input = IS_I_c1
  1198. Predicate =
  1199. Action = Update_Va; Rcv_BTU; [RR_r](1)
  1200. NewState = LINK_OPENED
  1201. [Transition]
  1202. Input = OS_I_c0|OS_I_r0|OS_I_r1
  1203. Predicate =
  1204. Action = Update_Va; Dsc_I-fld
  1205. NewState =
  1206. [Transition]
  1207. Input = OS_I_c1
  1208. Predicate =
  1209. Action = Update_Va; Dsc_I-fld; [RR_r](1)
  1210. NewState =
  1211. [Transition]
  1212. Input = REJ_c0 | REJ_r0 | REJ_r1
  1213. Predicate = Nr == Vs
  1214. Action = Update_Va
  1215. NewState =
  1216. [Transition]
  1217. Input = REJ_c0 | REJ_r
  1218. Predicate = Nr != Vs
  1219. Action = Resend Packets, Update_Va; Is_Ct--
  1220. NewState =
  1221. [Transition]
  1222. Input = REJ_c1
  1223. Predicate = Nr == Vs
  1224. Action = Update_Va; TT2; [RR_r](1)
  1225. NewState =
  1226. [Transition]
  1227. Input = REJ_c1
  1228. Predicate = Nr != Vs
  1229. Action = Resend Packets, Update_Va; Is_Ct--; [RR_r](1)
  1230. NewState =
  1231. [Transition]
  1232. Input = RNR_c0|RNR_r0|RNR_r1
  1233. Predicate =
  1234. Action = INDICATE_REMOTE_BUSY; Update_Va; Vb=Rb; Is_Ct=N2; Stop Send_Proc
  1235. NewState = REJECT_REMOTE_BUSY
  1236. [Transition]
  1237. Input = RNR_c1
  1238. Predicate =
  1239. Action = INDICATE_REMOTE_BUSY; Update_Va; Vb=Rb; Is_Ct=N2; \
  1240. Stop Send_Proc; [RR_r](1)
  1241. NewState = REJECT_REMOTE_BUSY
  1242. [Transition]
  1243. Input = RR_c0|RR_r0|RR_r1
  1244. Predicate =
  1245. Action = Update_Va
  1246. NewState =
  1247. [Transition]
  1248. Input = RR_c1
  1249. Predicate =
  1250. Action = Update_Va; [RR_r](1)
  1251. NewState =
  1252. ;******************** CHECKPOINTING (09) ***********************
  1253. [[State]]
  1254. Name = CHECKPOINTING
  1255. [Transition]
  1256. Input = ACTIVATE_LS | DEACTIVATE_LS
  1257. Predicate =
  1258. Action = Logical Error
  1259. NewState =
  1260. [Transition]
  1261. Input = ENTER_LCL_Busy
  1262. Predicate =
  1263. Action = Vb=Lb; TT2; Ir_Ct=N3; [RNR_r](0)
  1264. NewState = CHKP_LOCAL_BUSY
  1265. [Transition]
  1266. Input = EXIT_LCL_Busy
  1267. Predicate =
  1268. Action = Logical Error
  1269. NewState =
  1270. [Transition]
  1271. Input = LPDU_INVALID_r | LPDU_INVALID_c0
  1272. Predicate =
  1273. Action = INDICATE_FRMR_SENT; TT1; TT2; ITi; VWXYZ=0x01; [FRMR](0)
  1274. NewState = FRMR_SENT
  1275. [Transition]
  1276. Input = LPDU_INVALID_c1
  1277. Predicate =
  1278. Action = INDICATE_FRMR_SENT; TT1; TT2; ITi; VWXYZ=0x01; [FRMR](1)
  1279. NewState = FRMR_SENT
  1280. ; [Transition]
  1281. ; Input = SEND_BTU
  1282. ; Predicate =
  1283. ; Action = [Queue_I_LPDU]
  1284. ; NewState =
  1285. [Transition]
  1286. Input = SET_ABME
  1287. Predicate =
  1288. Action = Logical Error
  1289. NewState =
  1290. [Transition]
  1291. Input = SET_ADM
  1292. Predicate = Vc==0
  1293. Action = Vc=DISCp
  1294. NewState =
  1295. [Transition]
  1296. Input = SET_ADM
  1297. Predicate = Vc!=0
  1298. Action = Logical Error
  1299. NewState =
  1300. [Transition]
  1301. Input = Ti_Expired
  1302. Predicate =
  1303. Action = Logical Error
  1304. NewState =
  1305. [Transition]
  1306. Input = T1_Expired
  1307. Predicate = P_Ct==0
  1308. Action = INDICATE_LINK_LOST; TT2; ITi
  1309. NewState = DISCONNECTED
  1310. [Transition]
  1311. Input = T1_Expired
  1312. Predicate = P_Ct!=0
  1313. Action = IT1; P_Ct--; Vp=Vs; TT2; Ir_Ct=N3; Stop Send_Proc; [RR_c](1)
  1314. NewState =
  1315. [Transition]
  1316. Input = T2_Expired
  1317. Predicate =
  1318. Action = Ir_Ct=N3; [RR_r](0)
  1319. NewState =
  1320. [Transition]
  1321. Input = DISC0|DISC1
  1322. Predicate =
  1323. Action = INDICATE_DM_DISC_RECEIVED; TT1; ITi; TT2; [UA](P)
  1324. NewState = DISCONNECTED
  1325. [Transition]
  1326. Input = DM0|DM1
  1327. Predicate =
  1328. Action = INDICATE_DM_DISC_RECEIVED; TT1; ITi; TT2
  1329. NewState = DISCONNECTED
  1330. [Transition]
  1331. Input = FRMR
  1332. Predicate =
  1333. Action = INDICATE_FRMR_RECEIVED; TT1; RTi; P_Ct=N2; TT2; Vc=0
  1334. NewState = FRMR_RECEIVED
  1335. [Transition]
  1336. Input = SABME
  1337. Predicate =
  1338. Action = INDICATE_RESET; Vi=RIp; Pf=P; TT1; ITi; TT2
  1339. NewState = RESETTING
  1340. [Transition]
  1341. Input = UA
  1342. Predicate = Vi!=ISp
  1343. Action = INDICATE_FRMR_SENT; TT1; ITi; TT2; Vc=0; [FRMR](0)
  1344. NewState = FRMR_SENT
  1345. [Transition]
  1346. Input = UA
  1347. Predicate = Vi==ISp
  1348. Action = Ignore_LPDU
  1349. NewState =
  1350. [Transition]
  1351. Input = IS_I_c0|IS_I_r0
  1352. Predicate = Va == Nr
  1353. Action = Rcv_BTU; [Send_ACK]
  1354. NewState =
  1355. [Transition]
  1356. Input = IS_I_c0|IS_I_r0
  1357. Predicate = Va != Nr
  1358. Action = Adjust_Ww; Rcv_BTU; Is_Ct=N2; [Send_ACK]
  1359. NewState =
  1360. [Transition]
  1361. Input = IS_I_c1
  1362. Predicate = Va == Nr
  1363. Action = Rcv_BTU; TT2; Ir_Ct=N3; [RR_r](1)
  1364. NewState =
  1365. [Transition]
  1366. Input = IS_I_c1
  1367. Predicate = Va != Nr
  1368. Action = Adjust_Ww; Rcv_BTU; Is_Ct=N2; TT2; Ir_Ct=N3; [RR_r](1)
  1369. NewState =
  1370. [Transition]
  1371. Input = IS_I_r1
  1372. Predicate = Vc==0
  1373. Action = Update_Va_Chkpt; Rcv_BTU; Start Send_Proc; [Send_ACK]
  1374. NewState = LINK_OPENED
  1375. [Transition]
  1376. Input = IS_I_r1
  1377. Predicate = Vc==DISCp
  1378. Action = Update_Va_Chkpt, RT1; Dsc_I-fld; Vc=0; TTi; P_Ct=N2; TT2; \
  1379. [DISC](1)
  1380. NewState = DISCONNECTING
  1381. [Transition]
  1382. Input = OS_I_c0|OS_I_r0
  1383. Predicate = Va == Nr
  1384. Action = Dsc_I-fld; TT2; Ir_Ct=N3; [REJ_r](0)
  1385. NewState = CHKP_REJECT
  1386. [Transition]
  1387. Input = OS_I_c0|OS_I_r0
  1388. Predicate = Va != Nr
  1389. Action = Adjust_Ww; Dsc_I-fld; Is_Ct=N2; TT2; Ir_Ct=N3; [REJ_r](0)
  1390. NewState = CHKP_REJECT
  1391. [Transition]
  1392. Input = OS_I_c1
  1393. Predicate = Va == Nr
  1394. Action = Dsc_I-fld; TT2; Ir_Ct=N3; [REJ_r](1)
  1395. NewState = CHKP_REJECT
  1396. [Transition]
  1397. Input = OS_I_c1
  1398. Predicate = Va != Nr
  1399. Action = Adjust_Ww; Dsc_I-fld; Is_Ct=N2; TT2; Ir_Ct=N3; [REJ_r](1)
  1400. NewState = CHKP_REJECT
  1401. [Transition]
  1402. Input = OS_I_r1
  1403. Predicate = Vc==0
  1404. Action = Update_Va_Chkpt; Dsc_I-fld; TT2; Ir_Ct=N3; Start Send_Proc; \
  1405. [REJ_r](0)
  1406. NewState = REJECTION
  1407. [Transition]
  1408. Input = OS_I_r1
  1409. Predicate = Vc==DISCp
  1410. Action = Update_Va_Chkpt, RT1; Dsc_I-fld; Vc=0; P_Ct=N2; TT2; [DISC](1)
  1411. NewState = DISCONNECTING
  1412. [Transition]
  1413. Input = REJ_c0 | REJ_r0
  1414. Predicate = Va != Nr
  1415. Action = Is_Ct=N2; Resend Packets
  1416. NewState =
  1417. [Transition]
  1418. Input = REJ_c1
  1419. Predicate = Va == Nr
  1420. Action = TT2; [RR_r](1)
  1421. NewState =
  1422. [Transition]
  1423. Input = REJ_c1
  1424. Predicate = Va != Nr
  1425. Action = Is_Ct=N2; TT2; Ir_Ct=N3; Resend Packets; [RR_r](1)
  1426. NewState =
  1427. [Transition]
  1428. Input = REJ_r1
  1429. Predicate = Vc==0
  1430. Action = Update_Va_Chkpt; Start Send_Proc
  1431. NewState = LINK_OPENED
  1432. [Transition]
  1433. Input = RNR_c0 | RNR_r0
  1434. Predicate = Va == Nr
  1435. Action = Vb=Rb; Is_Ct=N2
  1436. NewState =
  1437. [Transition]
  1438. Input = RNR_c0 | RNR_r0
  1439. Predicate = Va != Nr
  1440. Action = Adjust_Ww; Vb=Rb; Is_Ct=N2
  1441. NewState =
  1442. [Transition]
  1443. Input = RNR_c1
  1444. Predicate = Va == Nr
  1445. Action = Vb=Rb; TT2; Is_Ct=N2; Ir_Ct=N3; [RR_r](1)
  1446. NewState =
  1447. [Transition]
  1448. Input = RNR_c1
  1449. Predicate = Va != Nr
  1450. Action = Adjust_Ww; Vb=Rb; TT2; Is_Ct=N2; Ir_Ct=N3; [RR_r](1)
  1451. NewState =
  1452. [Transition]
  1453. Input = RNR_r1
  1454. Predicate = Vc==0
  1455. Action = INDICATE_REMOTE_BUSY; Update_Va_Chkpt; Is_Ct=N2
  1456. NewState = REMOTE_BUSY
  1457. [Transition]
  1458. Input = RR_c0 | RR_r0
  1459. Predicate = Va == Nr
  1460. Action = ;
  1461. NewState =
  1462. [Transition]
  1463. Input = RR_c0 | RR_r0
  1464. Predicate = Va != Nr
  1465. Action = Adjust_Ww; Is_Ct=N2
  1466. NewState =
  1467. [Transition]
  1468. Input = RR_c1
  1469. Predicate = Va == Nr
  1470. Action = TT2; Ir_Ct=N3; [RR_r](1)
  1471. NewState =
  1472. [Transition]
  1473. Input = RR_c1
  1474. Predicate = Va != Nr
  1475. Action = Adjust_Ww; Is_Ct=N2; TT2; Ir_Ct=N3; [RR_r](1)
  1476. NewState =
  1477. [Transition]
  1478. Input = RR_r1
  1479. Predicate = Vc==0
  1480. Action = Update_Va_Chkpt; Start Send_Proc
  1481. NewState = LINK_OPENED
  1482. [Transition]
  1483. Input = REJ_r1|RNR_r1|RR_r1
  1484. Predicate = Vc==DISCp
  1485. Action = Update_Va_Chkpt, RT1; Vc=0; P_Ct=N2; [DISC](1)
  1486. NewState = DISCONNECTING
  1487. ;***************** CHECKPOINTING+LOCAL_BUSY (10) ********************
  1488. [[State]]
  1489. Name = CHKP_LOCAL_BUSY
  1490. [Transition]
  1491. Input = ACTIVATE_LS | DEACTIVATE_LS | ENTER_LCL_Busy
  1492. Predicate =
  1493. Action = Logical Error
  1494. NewState =
  1495. [Transition]
  1496. Input = EXIT_LCL_Busy
  1497. Predicate =
  1498. Action = Vb=0; [RR_r](0)
  1499. NewState = CHKP_CLEARING
  1500. [Transition]
  1501. Input = LPDU_INVALID_r | LPDU_INVALID_c0
  1502. Predicate =
  1503. Action = INDICATE_FRMR_SENT; TT1; ITi; VWXYZ=0x01; [FRMR](0)
  1504. NewState = FRMR_SENT
  1505. [Transition]
  1506. Input = LPDU_INVALID_c1
  1507. Predicate =
  1508. Action = INDICATE_FRMR_SENT; TT1; ITi; VWXYZ=0x01; [FRMR](1)
  1509. NewState = FRMR_SENT
  1510. ; [Transition]
  1511. ; Input = SEND_BTU
  1512. ; Predicate =
  1513. ; Action = [Queue_I_LPDU]
  1514. ; NewState =
  1515. [Transition]
  1516. Input = SET_ABME
  1517. Predicate =
  1518. Action = Logical Error
  1519. NewState =
  1520. [Transition]
  1521. Input = SET_ADM
  1522. Predicate = Vc==0
  1523. Action = Vc=DISCp
  1524. NewState =
  1525. [Transition]
  1526. Input = SET_ADM
  1527. Predicate = Vc!=0
  1528. Action = Logical Error
  1529. NewState =
  1530. [Transition]
  1531. Input = Ti_Expired
  1532. Predicate =
  1533. Action = Logical Error
  1534. NewState =
  1535. [Transition]
  1536. Input = T1_Expired
  1537. Predicate = P_Ct==0
  1538. Action = INDICATE_LINK_LOST; ITi
  1539. NewState = DISCONNECTED
  1540. [Transition]
  1541. Input = T1_Expired
  1542. Predicate = P_Ct!=0
  1543. Action = IT1; P_Ct--; Vp=Vs; Stop Send_Proc; [RNR_c](1)
  1544. NewState =
  1545. [Transition]
  1546. Input = T2_Expired
  1547. Predicate =
  1548. Action = Logical Error
  1549. NewState =
  1550. [Transition]
  1551. Input = DISC0|DISC1
  1552. Predicate =
  1553. Action = INDICATE_DM_DISC_RECEIVED; TT1; ITi; [UA](P)
  1554. NewState = DISCONNECTED
  1555. [Transition]
  1556. Input = DM0|DM1
  1557. Predicate =
  1558. Action = INDICATE_DM_DISC_RECEIVED; TT1; ITi
  1559. NewState = DISCONNECTED
  1560. [Transition]
  1561. Input = FRMR
  1562. Predicate =
  1563. Action = INDICATE_FRMR_RECEIVED; TT1; ITi; P_Ct=N2
  1564. NewState = FRMR_RECEIVED
  1565. [Transition]
  1566. Input = SABME
  1567. Predicate =
  1568. Action = INDICATE_RESET; Vi=RIp; Pf=P; TT1; ITi
  1569. NewState = RESETTING
  1570. [Transition]
  1571. Input = UA
  1572. Predicate = Vi!=ISp
  1573. Action = INDICATE_FRMR_SENT; TT1; ITi; [FRMR](0)
  1574. NewState = FRMR_SENT
  1575. [Transition]
  1576. Input = UA
  1577. Predicate = Vi==ISp
  1578. Action = Ignore_LPDU
  1579. NewState =
  1580. [Transition]
  1581. Input = IS_I_c0|IS_I_r0
  1582. Predicate = Va == Nr
  1583. Action = Dsc_I-fld; [RNR_r](0)
  1584. NewState =
  1585. [Transition]
  1586. Input = IS_I_c0|IS_I_r0
  1587. Predicate = Va != Nr
  1588. Action = Adjust_Ww; Dsc_I-fld; Is_Ct=N2; [RNR_r](0)
  1589. NewState =
  1590. [Transition]
  1591. Input = IS_I_c1
  1592. Predicate = Va == Nr
  1593. Action = Dsc_I-fld; [RNR_r](1)
  1594. NewState =
  1595. [Transition]
  1596. Input = IS_I_c1
  1597. Predicate = Va != Nr
  1598. Action = Adjust_Ww; Dsc_I-fld; Is_Ct=N2; [RNR_r](1)
  1599. NewState =
  1600. [Transition]
  1601. Input = IS_I_r1
  1602. Predicate = Vc==0
  1603. Action = Update_Va_Chkpt; Dsc_I-fld; Start Send_Proc; [RNR_r](0)
  1604. NewState = LOCAL_BUSY
  1605. [Transition]
  1606. Input = IS_I_r1
  1607. Predicate = Vc==DISCp
  1608. Action = Update_Va_Chkpt, TTi, RT1; Dsc_I-fld; Vc=0; P_Ct=N2; [DISC](1)
  1609. NewState = DISCONNECTING
  1610. [Transition]
  1611. Input = OS_I_c0|OS_I_r0
  1612. Predicate = Va == Nr
  1613. Action = Dsc_I-fld
  1614. NewState =
  1615. [Transition]
  1616. Input = OS_I_c0|OS_I_r0
  1617. Predicate = Va != Nr
  1618. Action = Adjust_Ww; Dsc_I-fld; Is_Ct=N2
  1619. NewState =
  1620. [Transition]
  1621. Input = OS_I_c1
  1622. Predicate = Va == Nr
  1623. Action = Dsc_I-fld; [RNR_r](1)
  1624. NewState =
  1625. [Transition]
  1626. Input = OS_I_c1
  1627. Predicate = Va != Nr
  1628. Action = Adjust_Ww; Dsc_I-fld; Is_Ct=N2; [RNR_r](1)
  1629. NewState =
  1630. [Transition]
  1631. Input = OS_I_r1
  1632. Predicate = Vc==0
  1633. Action = Update_Va_Chkpt; Dsc_I-fld; Start Send_Proc
  1634. NewState = LOCAL_BUSY
  1635. [Transition]
  1636. Input = OS_I_r1
  1637. Predicate = Vc==DISCp
  1638. Action = Update_Va_Chkpt, TTi, RT1; Dsc_I-fld; Vc=0; P_Ct=N2; [DISC](1)
  1639. NewState = DISCONNECTING
  1640. [Transition]
  1641. Input = REJ_c0 | REJ_r0
  1642. Predicate = Va != Nr
  1643. Action = Is_Ct=N2; Resend Packets
  1644. NewState =
  1645. [Transition]
  1646. Input = REJ_c1
  1647. Predicate = Va == Nr
  1648. Action = [RNR_r](1)
  1649. NewState =
  1650. [Transition]
  1651. Input = REJ_c1
  1652. Predicate = Va != Nr
  1653. Action = Is_Ct=N2; Resend Packets; [RNR_r](1)
  1654. NewState =
  1655. [Transition]
  1656. Input = REJ_r1
  1657. Predicate = Vc==0
  1658. Action = Update_Va_Chkpt; Start Send_Proc
  1659. NewState = LOCAL_BUSY
  1660. [Transition]
  1661. Input = RNR_c0 | RNR_r0
  1662. Predicate = Va == Nr
  1663. Action = Vb=LRb; Is_Ct=N2
  1664. NewState =
  1665. [Transition]
  1666. Input = RNR_c0 | RNR_r0
  1667. Predicate = Va != Nr
  1668. Action = Adjust_Ww; Vb=LRb; Is_Ct=N2
  1669. NewState =
  1670. [Transition]
  1671. Input = RNR_c1
  1672. Predicate = Va == Nr
  1673. Action = Vb=LRb; Is_Ct=N2; [RNR_r](1)
  1674. NewState =
  1675. [Transition]
  1676. Input = RNR_c1
  1677. Predicate = Va != Nr
  1678. Action = Adjust_Ww; Vb=LRb; Is_Ct=N2; [RNR_r](1)
  1679. NewState =
  1680. [Transition]
  1681. Input = RNR_r1
  1682. Predicate = Vc==0
  1683. Action = Update_Va_Chkpt; Vb=LRb; Is_Ct=N2
  1684. NewState = LOCAL_REMOTE_BUSY
  1685. [Transition]
  1686. Input = RR_c0 | RR_r0
  1687. Predicate = Va == Nr
  1688. Action = ;
  1689. NewState =
  1690. [Transition]
  1691. Input = RR_c0 | RR_r0
  1692. Predicate = Va != Nr
  1693. Action = Adjust_Ww; Is_Ct=N2
  1694. NewState =
  1695. [Transition]
  1696. Input = RR_c1
  1697. Predicate = Va == Nr
  1698. Action = [RNR_r](1)
  1699. NewState =
  1700. [Transition]
  1701. Input = RR_c1
  1702. Predicate = Va != Nr
  1703. Action = Adjust_Ww; Is_Ct=N2; [RNR_r](1)
  1704. NewState =
  1705. [Transition]
  1706. Input = RR_r1
  1707. Predicate = Vc==0
  1708. Action = Update_Va_Chkpt; Start Send_Proc
  1709. NewState = LOCAL_BUSY
  1710. [Transition]
  1711. Input = REJ_r1|RNR_r1|RR_r1
  1712. Predicate = Vc==DISCp
  1713. Action = Update_Va_Chkpt, TTi, RT1; Vc=0; P_Ct=N2; [DISC](1)
  1714. NewState = DISCONNECTING
  1715. ;******************** CHKP_REJECT (11) ***********************
  1716. [[State]]
  1717. Name = CHKP_REJECT
  1718. [Transition]
  1719. Input = ACTIVATE_LS | DEACTIVATE_LS
  1720. Predicate =
  1721. Action = Logical Error
  1722. NewState =
  1723. [Transition]
  1724. Input = ENTER_LCL_Busy
  1725. Predicate =
  1726. Action = Vb=Lb
  1727. NewState = CHKP_REJECT_LOCAL_BUSY
  1728. [Transition]
  1729. Input = EXIT_LCL_Busy
  1730. Predicate =
  1731. Action = Logical Error
  1732. NewState =
  1733. [Transition]
  1734. Input = LPDU_INVALID_r | LPDU_INVALID_c0
  1735. Predicate =
  1736. Action = INDICATE_FRMR_SENT; TT1; ITi; VWXYZ=0x01; [FRMR](0)
  1737. NewState = FRMR_SENT
  1738. [Transition]
  1739. Input = LPDU_INVALID_c1
  1740. Predicate =
  1741. Action = INDICATE_FRMR_SENT; TT1; ITi; VWXYZ=0x01; [FRMR](1)
  1742. NewState = FRMR_SENT
  1743. ; [Transition]
  1744. ; Input = SEND_BTU
  1745. ; Predicate =
  1746. ; Action = [Queue_I_LPDU]
  1747. ; NewState =
  1748. [Transition]
  1749. Input = SET_ABME
  1750. Predicate =
  1751. Action = Logical Error
  1752. NewState =
  1753. [Transition]
  1754. Input = SET_ADM
  1755. Predicate = Vc==0
  1756. Action = Vc=DISCp
  1757. NewState =
  1758. [Transition]
  1759. Input = SET_ADM
  1760. Predicate = Vc!=0
  1761. Action = Logical Error
  1762. NewState =
  1763. [Transition]
  1764. Input = Ti_Expired
  1765. Predicate =
  1766. Action = Logical Error
  1767. NewState =
  1768. [Transition]
  1769. Input = T1_Expired
  1770. Predicate = P_Ct==0
  1771. Action = INDICATE_LINK_LOST; ITi
  1772. NewState = DISCONNECTED
  1773. [Transition]
  1774. Input = T1_Expired
  1775. Predicate = P_Ct!=0
  1776. Action = IT1; P_Ct--; Vp=Vs; Stop Send_Proc; [RR_c](1)
  1777. NewState =
  1778. [Transition]
  1779. Input = T2_Expired
  1780. Predicate =
  1781. Action = Logical Error
  1782. NewState =
  1783. [Transition]
  1784. Input = DISC0|DISC1
  1785. Predicate =
  1786. Action = INDICATE_DM_DISC_RECEIVED; TT1; ITi; [UA](P)
  1787. NewState = DISCONNECTED
  1788. [Transition]
  1789. Input = DM
  1790. Predicate =
  1791. Action = INDICATE_DM_DISC_RECEIVED; TT1; ITi
  1792. NewState = DISCONNECTED
  1793. [Transition]
  1794. Input = FRMR
  1795. Predicate =
  1796. Action = INDICATE_FRMR_RECEIVED; TT1; ITi; P_Ct=N2
  1797. NewState = FRMR_RECEIVED
  1798. [Transition]
  1799. Input = SABME
  1800. Predicate =
  1801. Action = INDICATE_RESET; Vi=RIp; Pf=P; TT1; ITi
  1802. NewState = RESETTING
  1803. [Transition]
  1804. Input = UA
  1805. Predicate =
  1806. Action = INDICATE_FRMR_SENT; TT1; ITi; [FRMR](0)
  1807. NewState = FRMR_SENT
  1808. [Transition]
  1809. Input = IS_I_c0|IS_I_r0
  1810. Predicate = Va == Nr
  1811. Action = Rcv_BTU; [Send_ACK]
  1812. NewState = CHECKPOINTING
  1813. [Transition]
  1814. Input = IS_I_c0|IS_I_r0
  1815. Predicate = Va != Nr
  1816. Action = Adjust_Ww; Rcv_BTU; Is_Ct=N2; [Send_ACK]
  1817. NewState = CHECKPOINTING
  1818. [Transition]
  1819. Input = IS_I_c1
  1820. Predicate = Va == Nr
  1821. Action = Rcv_BTU; [RR_r](1)
  1822. NewState = CHECKPOINTING
  1823. [Transition]
  1824. Input = IS_I_c1
  1825. Predicate = Va != Nr
  1826. Action = Adjust_Ww; Rcv_BTU; Is_Ct=N2; [RR_r](1)
  1827. NewState = CHECKPOINTING
  1828. [Transition]
  1829. Input = IS_I_r1
  1830. Predicate = Vc==0
  1831. Action = Update_Va_Chkpt; Rcv_BTU; Start Send_Proc; [Send_ACK]
  1832. NewState = LINK_OPENED
  1833. [Transition]
  1834. Input = IS_I_r1
  1835. Predicate = Vc==DISCp
  1836. Action = Update_Va_Chkpt, RT1; Dsc_I-fld; Vc=0; P_Ct=N2; [DISC](1)
  1837. NewState = DISCONNECTING
  1838. [Transition]
  1839. Input = OS_I_c0|OS_I_r0
  1840. Predicate = Va == Nr
  1841. Action = Dsc_I-fld
  1842. NewState =
  1843. [Transition]
  1844. Input = OS_I_c0|OS_I_r0
  1845. Predicate = Va != Nr
  1846. Action = Adjust_Ww; Dsc_I-fld; Is_Ct=N2
  1847. NewState =
  1848. [Transition]
  1849. Input = OS_I_c1
  1850. Predicate = Va == Nr
  1851. Action = Dsc_I-fld; [RR_r](1)
  1852. NewState =
  1853. [Transition]
  1854. Input = OS_I_c1
  1855. Predicate = Va != Nr
  1856. Action = Adjust_Ww; Dsc_I-fld; Is_Ct=N2; [RR_r](1)
  1857. NewState =
  1858. [Transition]
  1859. Input = OS_I_r1
  1860. Predicate = Vc==0
  1861. Action = Update_Va_Chkpt; Dsc_I-fld; Start Send_Proc
  1862. NewState = REJECTION
  1863. [Transition]
  1864. Input = OS_I_r1
  1865. Predicate = Vc==DISCp
  1866. Action = Update_Va_Chkpt, RT1; Dsc_I-fld; Vc=0; P_Ct=N2; [DISC](1)
  1867. NewState = DISCONNECTING
  1868. [Transition]
  1869. Input = REJ_c0 | REJ_r0
  1870. Predicate = Va != Nr
  1871. Action = Is_Ct=N2; Resend Packets
  1872. NewState =
  1873. [Transition]
  1874. Input = REJ_c1
  1875. Predicate = Va == Nr
  1876. Action = [RR_r](1)
  1877. NewState =
  1878. [Transition]
  1879. Input = REJ_c1
  1880. Predicate = Va != Nr
  1881. Action = Is_Ct=N2; Resend Packets; [RR_r](1)
  1882. NewState =
  1883. [Transition]
  1884. Input = REJ_r1
  1885. Predicate = Vc==0
  1886. Action = Update_Va_Chkpt; Start Send_Proc
  1887. NewState = REJECTION
  1888. [Transition]
  1889. Input = RNR_c0 | RNR_r0
  1890. Predicate = Va == Nr
  1891. Action = Vb=Rb; Is_Ct=N2
  1892. NewState =
  1893. [Transition]
  1894. Input = RNR_c0 | RNR_r0
  1895. Predicate = Va != Nr
  1896. Action = Adjust_Ww; Vb=Rb; Is_Ct=N2
  1897. NewState =
  1898. [Transition]
  1899. Input = RNR_c1
  1900. Predicate = Va == Nr
  1901. Action = Vb=Rb; Is_Ct=N2; [RR_r](1)
  1902. NewState =
  1903. [Transition]
  1904. Input = RNR_c1
  1905. Predicate = Va != Nr
  1906. Action = Adjust_Ww; Vb=Rb; Is_Ct=N2; [RR_r](1)
  1907. NewState =
  1908. [Transition]
  1909. Input = RNR_r1
  1910. Predicate = Vc==0
  1911. Action = INDICATE_REMOTE_BUSY; Update_Va_Chkpt; Is_Ct=N2
  1912. NewState = REJECT_REMOTE_BUSY
  1913. [Transition]
  1914. Input = RR_c0 | RR_r0
  1915. Predicate = Va != Nr
  1916. Action = Adjust_Ww; Is_Ct=N2
  1917. NewState =
  1918. [Transition]
  1919. Input = RR_c1
  1920. Predicate = Va == Nr
  1921. Action = [RR_r](1)
  1922. NewState =
  1923. [Transition]
  1924. Input = RR_c1
  1925. Predicate = Va != Nr
  1926. Action = Adjust_Ww; Is_Ct=N2; [RR_r](1)
  1927. NewState =
  1928. [Transition]
  1929. Input = RR_r1
  1930. Predicate = Vc==0
  1931. Action = Update_Va_Chkpt; Start Send_Proc
  1932. NewState = REJECTION
  1933. [Transition]
  1934. Input = REJ_r1|RNR_r1|RR_r1
  1935. Predicate = Vc==DISCp
  1936. Action = Update_Va_Chkpt, RT1; Vc=0; P_Ct=N2; [DISC](1)
  1937. NewState = DISCONNECTING
  1938. ;******************** RESETTING (12) ***********************
  1939. [[State]]
  1940. Name = RESETTING
  1941. [Transition]
  1942. Input = ACTIVATE_LS | DEACTIVATE_LS
  1943. Predicate =
  1944. Action = Logical Error
  1945. NewState =
  1946. [Transition]
  1947. Input = ENTER_LCL_Busy
  1948. Predicate =
  1949. Action = Vb=Lb
  1950. NewState =
  1951. [Transition]
  1952. Input = EXIT_LCL_Busy
  1953. Predicate =
  1954. Action = Vb=0
  1955. NewState =
  1956. [Transition]
  1957. Input = LPDU_INVALID
  1958. Predicate =
  1959. Action = Ignore_LPDU
  1960. NewState =
  1961. ; [Transition]
  1962. ; Input = SEND_BTU
  1963. ; Predicate =
  1964. ; Action = Logical Error
  1965. ; NewState =
  1966. [Transition]
  1967. Input = SET_ABME
  1968. Predicate =
  1969. Action = Vi=Op; RTi; Va=Vs=Vr=Vp=0; Is_Ct=N2; Ir_Ct=N3; [UA](Pf)
  1970. NewState = LINK_OPENING
  1971. [Transition]
  1972. Input = SET_ADM
  1973. Predicate =
  1974. Action = CONFIRM_DISCONNECT; Vi=0; RTi; [DM](Pf)
  1975. NewState = DISCONNECTED
  1976. [Transition]
  1977. Input = Ti_Expired
  1978. Predicate =
  1979. Action = INDICATE_TI_TIMER_EXPIRED; ITi
  1980. NewState =
  1981. [Transition]
  1982. Input = T1_Expired|T2_Expired
  1983. Predicate =
  1984. Action = Logical Error
  1985. NewState =
  1986. [Transition]
  1987. Input = DISC0|DISC1
  1988. Predicate =
  1989. Action = INDICATE_DM_DISC_RECEIVED; Vi=0; RTi; [UA](P)
  1990. NewState = DISCONNECTED
  1991. [Transition]
  1992. Input = DM0|DM1
  1993. Predicate =
  1994. Action = INDICATE_DM_DISC_RECEIVED; Vi=0; RTi
  1995. NewState = DISCONNECTED
  1996. [Transition]
  1997. Input = FRMR
  1998. Predicate =
  1999. Action = INDICATE_FRMR_RECEIVED; Vi=0; RTi; P_Ct=N2
  2000. NewState = FRMR_RECEIVED
  2001. [Transition]
  2002. Input = SABME
  2003. Predicate =
  2004. Action = INDICATE_RESET; RTi
  2005. NewState =
  2006. [Transition]
  2007. Input = UA
  2008. Predicate =
  2009. Action = Ignore_LPDU
  2010. NewState =
  2011. [Transition]
  2012. Input = IS_I|OS_I
  2013. Predicate =
  2014. Action = Ignore_LPDU
  2015. NewState =
  2016. [Transition]
  2017. Input = REJ|RNR|RR
  2018. Predicate =
  2019. Action = Ignore_LPDU
  2020. NewState =
  2021. ;******************** REMOTE_BUSY (13) ***********************
  2022. [[State]]
  2023. Name = REMOTE_BUSY
  2024. [Transition]
  2025. Input = ACTIVATE_LS | DEACTIVATE_LS
  2026. Predicate =
  2027. Action = Logical Error
  2028. NewState =
  2029. [Transition]
  2030. Input = ENTER_LCL_Busy
  2031. Predicate =
  2032. Action = Vb=LRb; TT2; Ir_Ct=N3; [RNR_r](0)
  2033. NewState = LOCAL_REMOTE_BUSY
  2034. [Transition]
  2035. Input = EXIT_LCL_Busy
  2036. Predicate =
  2037. Action = Logical Error
  2038. NewState =
  2039. [Transition]
  2040. Input = LPDU_INVALID_r | LPDU_INVALID_c0
  2041. Predicate =
  2042. Action = INDICATE_FRMR_SENT; TT1; RTi; TT2; VWXYZ=0x01; [FRMR](0)
  2043. NewState = FRMR_SENT
  2044. [Transition]
  2045. Input = LPDU_INVALID_c1
  2046. Predicate =
  2047. Action = INDICATE_FRMR_SENT; TT1; RTi; TT2; VWXYZ=0x01; [FRMR](1)
  2048. NewState = FRMR_SENT
  2049. ; [Transition]
  2050. ; Input = SEND_BTU
  2051. ; Predicate =
  2052. ; Action = [Queue_I_LPDU]
  2053. ; NewState =
  2054. [Transition]
  2055. Input = SET_ABME
  2056. Predicate =
  2057. Action = Logical Error
  2058. NewState =
  2059. [Transition]
  2060. Input = SET_ADM
  2061. Predicate =
  2062. Action = TTi; RT1; P_Ct=N2; TT2; [DISC](1)
  2063. NewState = DISCONNECTING
  2064. [Transition]
  2065. Input = Ti_Expired
  2066. Predicate =
  2067. Action = IT1; P_Ct=N2; Vp=Vs; TT2; Ir_Ct=N3; [RR_c](1)
  2068. NewState = CHECKPOINTING
  2069. [Transition]
  2070. Input = T1_Expired
  2071. Predicate = Is_Ct>0
  2072. Action = IT1; P_Ct=N2; Vp=Vs; TT2; Ir_Ct=N3; [RR_c](1)
  2073. NewState = CHECKPOINTING
  2074. [Transition]
  2075. Input = T1_Expired
  2076. Predicate = Is_Ct<=0
  2077. Action = TT2; P_Ct=N2; IT1; [DISC](1)
  2078. NewState = DISCONNECTING
  2079. [Transition]
  2080. Input = T2_Expired
  2081. Predicate =
  2082. Action = Ir_Ct=N3; [RR_r](0)
  2083. NewState =
  2084. [Transition]
  2085. Input = DISC0|DISC1
  2086. Predicate =
  2087. Action = INDICATE_DM_DISC_RECEIVED; TT1; RTi; TT2; [UA](P)
  2088. NewState = DISCONNECTED
  2089. [Transition]
  2090. Input = DM0|DM1
  2091. Predicate =
  2092. Action = INDICATE_DM_DISC_RECEIVED; TT1; RTi; TT2
  2093. NewState = DISCONNECTED
  2094. [Transition]
  2095. Input = FRMR
  2096. Predicate =
  2097. Action = INDICATE_FRMR_RECEIVED; TT1; RTi; P_Ct=N2; TT2
  2098. NewState = FRMR_RECEIVED
  2099. [Transition]
  2100. Input = SABME
  2101. Predicate =
  2102. Action = INDICATE_RESET; Vi=RIp; Pf=P; TT1; RTi; TT2
  2103. NewState = RESETTING
  2104. [Transition]
  2105. Input = UA
  2106. Predicate =
  2107. Action = INDICATE_FRMR_SENT; TT1; RTi; TT2; [FRMR](0)
  2108. NewState = FRMR_SENT
  2109. [Transition]
  2110. Input = IS_I_c0|IS_I_r0
  2111. Predicate =
  2112. Action = Update_Va; Rcv_BTU; [Send_ACK]
  2113. NewState =
  2114. [Transition]
  2115. Input = IS_I_r1
  2116. Predicate =
  2117. Action = INDICATE_REMOTE_READY; Vb=0; Update_Va; Rcv_BTU; [Send_ACK]
  2118. NewState = LINK_OPENED
  2119. [Transition]
  2120. Input = IS_I_c1
  2121. Predicate =
  2122. Action = Update_Va; Rcv_BTU; TT2; Ir_Ct=N3; [RR_r](1)
  2123. NewState =
  2124. [Transition]
  2125. Input = OS_I_c0|OS_I_r0
  2126. Predicate =
  2127. Action = Update_Va; Dsc_I-fld; TT2; Ir_Ct=N3; [REJ_r](0)
  2128. NewState = REJECT_REMOTE_BUSY
  2129. [Transition]
  2130. Input = OS_I_c1
  2131. Predicate =
  2132. Action = Update_Va; Dsc_I-fld; TT2; Ir_Ct=N3; [RNR_r](1)
  2133. NewState = REJECT_REMOTE_BUSY
  2134. [Transition]
  2135. Input = OS_I_r1
  2136. Predicate =
  2137. Action = INDICATE_REMOTE_READY; Vb=0; Update_Va; Dsc_I-fld; TT2; \
  2138. [REJ_r](0)
  2139. NewState = REJECTION
  2140. [Transition]
  2141. Input = REJ_c0 | REJ_r
  2142. Predicate = Nr == Vs
  2143. Action = INDICATE_REMOTE_READY; Vb=0; Update_Va; Start Send_Proc
  2144. NewState = LINK_OPENED
  2145. [Transition]
  2146. Input = REJ_c0 | REJ_r
  2147. Predicate = Nr != Vs
  2148. Action = INDICATE_REMOTE_READY; Vb=0; Resend Packets, Update_Va;\
  2149. Is_Ct--; Start Send_Proc
  2150. NewState = LINK_OPENED
  2151. [Transition]
  2152. Input = REJ_c1
  2153. Predicate = Nr != Vs
  2154. Action = INDICATE_REMOTE_READY; Vb=0; Resend Packets, Update_Va;\
  2155. TT2; Is_Ct--; Ir_Ct=N3; Start Send_Proc; [RR_r](1)
  2156. NewState = LINK_OPENED
  2157. [Transition]
  2158. Input = REJ_c1
  2159. Predicate = Nr == Vs
  2160. Action = INDICATE_REMOTE_READY; Vb=0; Update_Va; TT2; Start Send_Proc;\
  2161. [RR_r](1)
  2162. NewState = LINK_OPENED
  2163. [Transition]
  2164. Input = RNR_c0|RNR_r0|RNR_r1
  2165. Predicate =
  2166. Action = Update_Va
  2167. NewState =
  2168. [Transition]
  2169. Input = RNR_c1
  2170. Predicate =
  2171. Action = Update_Va; TT2; Ir_Ct=N3; [RR_r](1)
  2172. NewState =
  2173. ;
  2174. ; The orginal IBM state machine sucks!!!
  2175. ;
  2176. ; We must restart T1 timer, because by sending Poll we actually
  2177. ; sync the send and receive state variables. Otherwise a
  2178. ; pending T1 timeout will send immediately another RR-c1, that will
  2179. ; actually kill this state machine (in a MP system the SendSpinLock
  2180. ; keeps the link stable). UpdateVa cannot restart T1, if no new
  2181. ; frames have been acknowledged (it's impossible!)
  2182. ;
  2183. ; [Transition]
  2184. ; Input = RR_c1
  2185. ; Predicate = Nr != Vs
  2186. ; Action = INDICATE_REMOTE_READY; Vb=0; Update_Va; TT2; Ir_Ct=N3;\
  2187. ; Send_RR_c(1); [RR_r](1)
  2188. ; NewState = CHECKPOINTING
  2189. [Transition]
  2190. Input = RR_c1
  2191. Predicate = Nr != Vs
  2192. Action = INDICATE_REMOTE_READY; Vb=0; Update_Va; RT1; TT2; Ir_Ct=N3;\
  2193. Send_RR_c(1); [RR_r](1)
  2194. NewState = CHECKPOINTING
  2195. [Transition]
  2196. Input = RR_c1
  2197. Predicate = Nr == Vs
  2198. Action = INDICATE_REMOTE_READY; Vb=0; Update_Va; TT2; \
  2199. Start Send_Proc; Ir_Ct=N3; [RR_r](1)
  2200. NewState = LINK_OPENED
  2201. [Transition]
  2202. Input = RR_c0|RR_r0|RR_r1
  2203. Predicate = Nr != Vs
  2204. Action = INDICATE_REMOTE_READY; Vb=0; Update_Va; RT1; [RR_c](1)
  2205. NewState = CHECKPOINTING
  2206. [Transition]
  2207. Input = RR_c0|RR_r0|RR_r1
  2208. Predicate = Nr == Vs
  2209. Action = INDICATE_REMOTE_READY; Vb=0; Update_Va; Start Send_Proc
  2210. NewState = LINK_OPENED
  2211. ;******************** LOCAL_REMOTE_BUSY (14) ***********************
  2212. [[State]]
  2213. Name = LOCAL_REMOTE_BUSY
  2214. [Transition]
  2215. Input = ACTIVATE_LS | DEACTIVATE_LS | ENTER_LCL_Busy
  2216. Predicate =
  2217. Action = Logical Error
  2218. NewState =
  2219. [Transition]
  2220. Input = EXIT_LCL_Busy
  2221. Predicate =
  2222. Action = Vb=Rb; TTi; RT1; P_Ct=N2; Vp=Vs; [RR_c](1)
  2223. NewState = CHECKPOINTING
  2224. [Transition]
  2225. Input = LPDU_INVALID_r | LPDU_INVALID_c0
  2226. Predicate =
  2227. Action = INDICATE_FRMR_SENT; TT1; RTi; VWXYZ=0x01; [FRMR](0)
  2228. NewState = FRMR_SENT
  2229. [Transition]
  2230. Input = LPDU_INVALID_c1
  2231. Predicate =
  2232. Action = INDICATE_FRMR_SENT; TT1; RTi; VWXYZ=0x01; [FRMR](1)
  2233. NewState = FRMR_SENT
  2234. ; [Transition]
  2235. ; Input = SEND_BTU
  2236. ; Predicate =
  2237. ; Action = [Queue_I_LPDU]
  2238. ; NewState =
  2239. [Transition]
  2240. Input = SET_ABME
  2241. Predicate =
  2242. Action = Logical Error
  2243. NewState =
  2244. [Transition]
  2245. Input = SET_ADM
  2246. Predicate =
  2247. Action = TTi; RT1; P_Ct=N2; [DISC](1)
  2248. NewState = DISCONNECTING
  2249. [Transition]
  2250. Input = Ti_Expired
  2251. Predicate =
  2252. Action = IT1; P_Ct=N2; Vp=Vs; [RNR_c](1)
  2253. NewState = CHKP_LOCAL_BUSY
  2254. [Transition]
  2255. Input = T1_Expired
  2256. Predicate =
  2257. Action = IT1; P_Ct=N2; Vp=Vs; [RNR_c](1)
  2258. NewState = CHKP_LOCAL_BUSY
  2259. [Transition]
  2260. Input = T2_Expired
  2261. Predicate =
  2262. Action = Logical Error
  2263. NewState =
  2264. [Transition]
  2265. Input = DISC0|DISC1
  2266. Predicate =
  2267. Action = INDICATE_DM_DISC_RECEIVED; TT1; RTi; [UA](P)
  2268. NewState = DISCONNECTED
  2269. [Transition]
  2270. Input = DM0|DM1
  2271. Predicate =
  2272. Action = INDICATE_DM_DISC_RECEIVED; TT1; RTi
  2273. NewState = DISCONNECTED
  2274. [Transition]
  2275. Input = FRMR
  2276. Predicate =
  2277. Action = INDICATE_FRMR_RECEIVED; TT1; RTi; P_Ct=N2
  2278. NewState = FRMR_RECEIVED
  2279. [Transition]
  2280. Input = SABME
  2281. Predicate =
  2282. Action = INDICATE_RESET; Vi=RIp; Pf=P; TT1; RTi
  2283. NewState = RESETTING
  2284. [Transition]
  2285. Input = UA
  2286. Predicate =
  2287. Action = INDICATE_FRMR_SENT; TT1; RTi; [FRMR](0)
  2288. NewState = FRMR_SENT
  2289. [Transition]
  2290. Input = IS_I_c0|IS_I_r0|IS_I_r1
  2291. Predicate =
  2292. Action = Update_Va; Dsc_I-fld; [RNR_r](0)
  2293. NewState =
  2294. [Transition]
  2295. Input = IS_I_c1
  2296. Predicate =
  2297. Action = Update_Va; Dsc_I-fld; [RNR_r](1)
  2298. NewState =
  2299. [Transition]
  2300. Input = OS_I_c0|OS_I_r0|OS_I_r1
  2301. Predicate =
  2302. Action = Update_Va; Dsc_I-fld; [RNR_r](0)
  2303. NewState =
  2304. [Transition]
  2305. Input = OS_I_c1
  2306. Predicate =
  2307. Action = Update_Va; Dsc_I-fld; [RNR_r](1)
  2308. NewState =
  2309. [Transition]
  2310. Input = REJ_c0 | REJ_r
  2311. Predicate = Nr == Vs
  2312. Action = Update_Va
  2313. NewState =
  2314. [Transition]
  2315. Input = REJ_c0 | REJ_r
  2316. Predicate = Nr != Vs
  2317. Action = INDICATE_REMOTE_READY; Vb=Lb; Start Send_Proc; \
  2318. Resend Packets, Update_Va; Is_Ct--
  2319. NewState = LOCAL_BUSY
  2320. [Transition]
  2321. Input = REJ_c1
  2322. Predicate = Nr == Vs
  2323. Action = Update_Va; TT2; [RR_r](1)
  2324. NewState =
  2325. [Transition]
  2326. Input = REJ_c1
  2327. Predicate = Nr != Vs
  2328. Action = INDICATE_REMOTE_READY; Vb=Lb; Resend Packets, Update_Va; \
  2329. Start Send_Proc; Is_Ct--; [RNR_r](1)
  2330. NewState = LOCAL_BUSY
  2331. [Transition]
  2332. Input = RNR_c0|RNR_r0|RNR_r1
  2333. Predicate =
  2334. Action = Update_Va
  2335. NewState =
  2336. [Transition]
  2337. Input = RNR_c1
  2338. Predicate =
  2339. Action = Update_Va; [RNR_r](1)
  2340. NewState =
  2341. [Transition]
  2342. Input = RR_c1
  2343. Predicate = Nr != Vs
  2344. Action = Vb=Lb; RT1; Update_Va, Send_RNR_c(1); [RNR_r](1)
  2345. NewState = CHKP_LOCAL_BUSY
  2346. [Transition]
  2347. Input = RR_c1
  2348. Predicate = Nr == Vs
  2349. Action = INDICATE_REMOTE_READY; Vb=Lb; Update_Va; Start Send_Proc; \
  2350. [RNR_r](1)
  2351. NewState = LOCAL_BUSY
  2352. [Transition]
  2353. Input = RR_c0|RR_r0|RR_r1
  2354. Predicate = Nr != Vs
  2355. Action = INDICATE_REMOTE_READY; Vb=Lb; RT1; Update_Va; [RNR_c](1)
  2356. NewState = CHKP_LOCAL_BUSY
  2357. [Transition]
  2358. Input = RR_c0|RR_r0|RR_r1
  2359. Predicate = Nr == Vs
  2360. Action = INDICATE_REMOTE_READY; Vb=Lb; Update_Va; Start Send_Proc
  2361. NewState = LOCAL_BUSY
  2362. ;******************** REJECT_LOCAL_BUSY (15) ***********************
  2363. [[State]]
  2364. Name = REJECT_LOCAL_BUSY
  2365. [Transition]
  2366. Input = ACTIVATE_LS | DEACTIVATE_LS | ENTER_LCL_Busy
  2367. Predicate =
  2368. Action = Logical Error
  2369. NewState =
  2370. [Transition]
  2371. Input = EXIT_LCL_Busy
  2372. Predicate =
  2373. Action = Vb=0; TTi; IT1; P_Ct=N2; Vp=Vs; Stop Send_Proc; [RR_c](1)
  2374. NewState = CHKP_REJECT
  2375. [Transition]
  2376. Input = LPDU_INVALID_r | LPDU_INVALID_c0
  2377. Predicate =
  2378. Action = INDICATE_FRMR_SENT; TT1; RTi; VWXYZ=0x01; [FRMR](0)
  2379. NewState = FRMR_SENT
  2380. [Transition]
  2381. Input = LPDU_INVALID_c1
  2382. Predicate =
  2383. Action = INDICATE_FRMR_SENT; TT1; RTi; VWXYZ=0x01; [FRMR](1)
  2384. NewState = FRMR_SENT
  2385. ; [Transition]
  2386. ; Input = SEND_BTU
  2387. ; Predicate =
  2388. ; Action = [Queue_I_LPDU]
  2389. ; NewState =
  2390. [Transition]
  2391. Input = SEND_I_POLL
  2392. Predicate =
  2393. Action = RT1; P_Ct=N2; Vp=Vs; Is_Ct--
  2394. NewState = CHKP_REJECT_LOCAL_BUSY
  2395. [Transition]
  2396. Input = SET_ABME
  2397. Predicate =
  2398. Action = Logical Error
  2399. NewState =
  2400. [Transition]
  2401. Input = SET_ADM
  2402. Predicate =
  2403. Action = TTi; RT1; P_Ct=N2; [DISC](1)
  2404. NewState = DISCONNECTING
  2405. [Transition]
  2406. Input = Ti_Expired
  2407. Predicate =
  2408. Action = IT1; P_Ct=N2; Stop Send_Proc; Vp=Vs; [RNR_c](1)
  2409. NewState = CHKP_REJECT_LOCAL_BUSY
  2410. [Transition]
  2411. Input = T1_Expired
  2412. Predicate = Is_Ct>0
  2413. Action = IT1; P_Ct=N2; Stop Send_Proc; Vp=Vs; [RNR_c](1)
  2414. NewState = CHKP_REJECT_LOCAL_BUSY
  2415. [Transition]
  2416. Input = T1_Expired
  2417. Predicate = Is_Ct<=0
  2418. Action = TT2; P_Ct=N2; IT1; [DISC](1)
  2419. NewState = DISCONNECTING
  2420. [Transition]
  2421. Input = T2_Expired
  2422. Predicate =
  2423. Action = Logical Error
  2424. NewState =
  2425. [Transition]
  2426. Input = DISC0|DISC1
  2427. Predicate =
  2428. Action = INDICATE_DM_DISC_RECEIVED; TT1; RTi; [UA](P)
  2429. NewState = DISCONNECTED
  2430. [Transition]
  2431. Input = DM0|DM1
  2432. Predicate =
  2433. Action = INDICATE_DM_DISC_RECEIVED; TT1; RTi
  2434. NewState = DISCONNECTED
  2435. [Transition]
  2436. Input = FRMR
  2437. Predicate =
  2438. Action = INDICATE_FRMR_RECEIVED; TT1; RTi
  2439. NewState = FRMR_RECEIVED
  2440. [Transition]
  2441. Input = SABME
  2442. Predicate =
  2443. Action = INDICATE_RESET; Vi=RIp; Pf=P; TT1; RTi
  2444. NewState = RESETTING
  2445. [Transition]
  2446. Input = UA
  2447. Predicate =
  2448. Action = INDICATE_FRMR_SENT; TT1; RTi; [FRMR](0)
  2449. NewState = FRMR_SENT
  2450. [Transition]
  2451. Input = IS_I_c0|IS_I_r0|IS_I_r1
  2452. Predicate =
  2453. Action = Update_Va; Dsc_I-fld; [RNR_r](0)
  2454. NewState = LOCAL_BUSY
  2455. [Transition]
  2456. Input = IS_I_c1
  2457. Predicate =
  2458. Action = Update_Va; Dsc_I-fld; [RNR_r](1)
  2459. NewState = LOCAL_BUSY
  2460. [Transition]
  2461. Input = OS_I_c0|OS_I_r0|OS_I_r1
  2462. Predicate =
  2463. Action = Update_Va; Dsc_I-fld
  2464. NewState =
  2465. [Transition]
  2466. Input = OS_I_c1
  2467. Predicate =
  2468. Action = Update_Va; Dsc_I-fld; [RNR_r](1)
  2469. NewState =
  2470. [Transition]
  2471. Input = REJ_c0 | REJ_r0 | REJ_r1
  2472. Predicate =
  2473. Action = Resend Packets, Update_Va;
  2474. NewState =
  2475. [Transition]
  2476. Input = REJ_c1
  2477. Predicate =
  2478. Action = Resend Packets, Update_Va; [RNR_r](1)
  2479. NewState =
  2480. [Transition]
  2481. Input = RNR_c0|RNR_r0|RNR_r1
  2482. Predicate =
  2483. Action = INDICATE_REMOTE_BUSY; Update_Va; Vb=LRb; Is_Ct=N2; \
  2484. Stop Send_Proc
  2485. NewState = REJECT_LOCAL_REMOTE_BUSY
  2486. [Transition]
  2487. Input = RNR_c1
  2488. Predicate =
  2489. Action = INDICATE_REMOTE_BUSY; Update_Va; Vb=LRb; Is_Ct=N2; \
  2490. Stop Send_Proc; [RNR_r](1)
  2491. NewState = REJECT_LOCAL_REMOTE_BUSY
  2492. [Transition]
  2493. Input = RR_c0|RR_r0|RR_r1
  2494. Predicate =
  2495. Action = Update_Va
  2496. NewState =
  2497. [Transition]
  2498. Input = RR_c1
  2499. Predicate =
  2500. Action = Update_Va; [RNR_r](1)
  2501. NewState =
  2502. ;***************** REJECTION + REMOTE_BUSY (16) ******************
  2503. [[State]]
  2504. Name = REJECT_REMOTE_BUSY
  2505. [Transition]
  2506. Input = ACTIVATE_LS | DEACTIVATE_LS
  2507. Predicate =
  2508. Action = Logical Error
  2509. NewState =
  2510. [Transition]
  2511. Input = ENTER_LCL_Busy
  2512. Predicate =
  2513. Action = Vb=LRb; [RNR_r](0)
  2514. NewState = REJECT_LOCAL_REMOTE_BUSY
  2515. [Transition]
  2516. Input = EXIT_LCL_Busy
  2517. Predicate =
  2518. Action = Logical Error
  2519. NewState =
  2520. [Transition]
  2521. Input = LPDU_INVALID_r | LPDU_INVALID_c0
  2522. Predicate =
  2523. Action = INDICATE_FRMR_SENT; TT1; RTi; VWXYZ=0x01; [FRMR](0)
  2524. NewState = FRMR_SENT
  2525. [Transition]
  2526. Input = LPDU_INVALID_c1
  2527. Predicate =
  2528. Action = INDICATE_FRMR_SENT; TT1; RTi; VWXYZ=0x01; [FRMR](1)
  2529. NewState = FRMR_SENT
  2530. ; [Transition]
  2531. ; Input = SEND_BTU
  2532. ; Predicate =
  2533. ; Action = [Queue_I_LPDU]
  2534. ; NewState =
  2535. [Transition]
  2536. Input = SET_ABME
  2537. Predicate =
  2538. Action = Logical Error
  2539. NewState =
  2540. [Transition]
  2541. Input = SET_ADM
  2542. Predicate =
  2543. Action = TTi; RT1; P_Ct=N2; [DISC](1)
  2544. NewState = DISCONNECTING
  2545. [Transition]
  2546. Input = Ti_Expired
  2547. Predicate =
  2548. Action = IT1; P_Ct=N2; Vp=Vs; [RR_c](1)
  2549. NewState = CHKP_REJECT
  2550. [Transition]
  2551. Input = T1_Expired
  2552. Predicate = Is_Ct>0
  2553. Action = IT1; P_Ct=N2; Vp=Vs; [RR_c](1)
  2554. NewState = CHKP_REJECT
  2555. [Transition]
  2556. Input = T1_Expired
  2557. Predicate = Is_Ct<=0
  2558. Action = TT2; P_Ct=N2; IT1; [DISC](1)
  2559. NewState = DISCONNECTING
  2560. [Transition]
  2561. Input = T2_Expired
  2562. Predicate =
  2563. Action = Logical Error
  2564. NewState =
  2565. [Transition]
  2566. Input = DISC0|DISC1
  2567. Predicate =
  2568. Action = INDICATE_DM_DISC_RECEIVED; TT1; RTi; [UA](P)
  2569. NewState = DISCONNECTED
  2570. [Transition]
  2571. Input = DM0|DM1
  2572. Predicate =
  2573. Action = INDICATE_DM_DISC_RECEIVED; TT1; RTi
  2574. NewState = DISCONNECTED
  2575. [Transition]
  2576. Input = FRMR
  2577. Predicate =
  2578. Action = INDICATE_FRMR_RECEIVED; TT1; RTi; P_Ct=N2
  2579. NewState = FRMR_RECEIVED
  2580. [Transition]
  2581. Input = SABME
  2582. Predicate =
  2583. Action = INDICATE_RESET; Vi=RIp; Pf=P; TT1; RTi
  2584. NewState = RESETTING
  2585. [Transition]
  2586. Input = UA
  2587. Predicate =
  2588. Action = INDICATE_FRMR_SENT; TT1; RTi; [FRMR](0)
  2589. NewState = FRMR_SENT
  2590. [Transition]
  2591. Input = IS_I_c0|IS_I_r0|IS_I_r1
  2592. Predicate =
  2593. Action = Update_Va; Rcv_BTU; [Send_ACK]
  2594. NewState = REMOTE_BUSY
  2595. [Transition]
  2596. Input = IS_I_c1
  2597. Predicate =
  2598. Action = Update_Va; Rcv_BTU; [RR_r](1)
  2599. NewState = REMOTE_BUSY
  2600. [Transition]
  2601. Input = OS_I_c0|OS_I_r0|OS_I_r1
  2602. Predicate =
  2603. Action = Update_Va; Dsc_I-fld
  2604. NewState =
  2605. [Transition]
  2606. Input = OS_I_c1
  2607. Predicate =
  2608. Action = Update_Va; Dsc_I-fld; [RR_r](1)
  2609. NewState =
  2610. [Transition]
  2611. Input = REJ_c0 | REJ_r
  2612. Predicate = Nr == Vs
  2613. Action = Update_Va
  2614. NewState =
  2615. [Transition]
  2616. Input = REJ_c0 | REJ_r
  2617. Predicate = Nr != Vs
  2618. Action = INDICATE_REMOTE_READY; Vb=0; Resend Packets, Update_Va;\
  2619. Is_Ct--; Start Send_Proc
  2620. NewState = REJECTION
  2621. [Transition]
  2622. Input = REJ_c1
  2623. Predicate = Nr == Vs
  2624. Action = Update_Va; TT2; [RR_r](1)
  2625. NewState =
  2626. [Transition]
  2627. Input = REJ_c1
  2628. Predicate = Nr != Vs
  2629. Action = INDICATE_REMOTE_READY; Vb=0; Resend Packets, Update_Va;\
  2630. Is_Ct--; Start Send_Proc; [RR_r](1)
  2631. NewState = REJECTION
  2632. [Transition]
  2633. Input = RNR_c0|RNR_r0|RNR_r1
  2634. Predicate =
  2635. Action = Update_Va
  2636. NewState =
  2637. [Transition]
  2638. Input = RNR_c1
  2639. Predicate =
  2640. Action = Update_Va; [RR_r](1)
  2641. NewState =
  2642. [Transition]
  2643. Input = RR_c1
  2644. Predicate = Nr != Vs
  2645. Action = INDICATE_REMOTE_READY; Vb=0; RT1; Update_Va, Send_RR_c(1);\
  2646. [RR_r](1)
  2647. NewState = CHKP_REJECT
  2648. [Transition]
  2649. Input = RR_c1
  2650. Predicate = Nr == Vs
  2651. Action = INDICATE_REMOTE_READY; Vb=0; Update_Va; Start Send_Proc; \
  2652. [RR_r](1)
  2653. NewState = REJECTION
  2654. [Transition]
  2655. Input = RR_c0|RR_r
  2656. Predicate = Nr != Vs
  2657. Action = INDICATE_REMOTE_READY; Vb=0; Update_Va; RT1; [RR_c](1)
  2658. NewState = CHKP_REJECT
  2659. [Transition]
  2660. Input = RR_c0|RR_r
  2661. Predicate = Nr == Vs
  2662. Action = INDICATE_REMOTE_READY; Vb=0; Update_Va; Start Send_Proc
  2663. NewState = REJECTION
  2664. ;************* CHECKPOINTING + REJECTION LOCAL_BUSY (17) *****************
  2665. [[State]]
  2666. Name = CHKP_REJECT_LOCAL_BUSY
  2667. [Transition]
  2668. Input = ACTIVATE_LS | DEACTIVATE_LS | ENTER_LCL_Busy
  2669. Predicate =
  2670. Action = Logical Error
  2671. NewState =
  2672. [Transition]
  2673. Input = EXIT_LCL_Busy
  2674. Predicate = Vb==Lb
  2675. Action = Vb=0; [RR_r](0)
  2676. NewState = CHKP_REJECT_CLEARING
  2677. [Transition]
  2678. Input = EXIT_LCL_Busy
  2679. Predicate = Vb==LRb
  2680. Action = Vb=Rb; [RR_r](0)
  2681. NewState = CHKP_REJECT_CLEARING
  2682. [Transition]
  2683. Input = LPDU_INVALID_r | LPDU_INVALID_c0
  2684. Predicate =
  2685. Action = INDICATE_FRMR_SENT; TT1; ITi; VWXYZ=0x01; [FRMR](0)
  2686. NewState = FRMR_SENT
  2687. [Transition]
  2688. Input = LPDU_INVALID_c1
  2689. Predicate =
  2690. Action = INDICATE_FRMR_SENT; TT1; ITi; VWXYZ=0x01; [FRMR](1)
  2691. NewState = FRMR_SENT
  2692. ; [Transition]
  2693. ; Input = SEND_BTU
  2694. ; Predicate =
  2695. ; Action = [Queue_I_LPDU]
  2696. ; NewState =
  2697. [Transition]
  2698. Input = SET_ABME
  2699. Predicate =
  2700. Action = Logical Error
  2701. NewState =
  2702. [Transition]
  2703. Input = SET_ADM
  2704. Predicate = Vc==0
  2705. Action = Vc=DISCp
  2706. NewState =
  2707. [Transition]
  2708. Input = SET_ADM
  2709. Predicate = Vc!=0
  2710. Action = Logical Error
  2711. NewState =
  2712. [Transition]
  2713. Input = Ti_Expired
  2714. Predicate =
  2715. Action = Logical Error
  2716. NewState =
  2717. [Transition]
  2718. Input = T1_Expired
  2719. Predicate = P_Ct==0
  2720. Action = INDICATE_LINK_LOST; ITi
  2721. NewState = DISCONNECTED
  2722. [Transition]
  2723. Input = T1_Expired
  2724. Predicate = P_Ct!=0
  2725. Action = IT1; P_Ct--; Vp=Vs; Stop Send_Proc; [RNR_c](1)
  2726. NewState =
  2727. [Transition]
  2728. Input = T2_Expired
  2729. Predicate =
  2730. Action = Logical Error
  2731. NewState =
  2732. [Transition]
  2733. Input = DISC0|DISC1
  2734. Predicate =
  2735. Action = INDICATE_DM_DISC_RECEIVED; TT1; ITi; [UA](P)
  2736. NewState = DISCONNECTED
  2737. [Transition]
  2738. Input = DM0|DM1
  2739. Predicate =
  2740. Action = INDICATE_DM_DISC_RECEIVED; TT1; ITi
  2741. NewState = DISCONNECTED
  2742. [Transition]
  2743. Input = FRMR
  2744. Predicate =
  2745. Action = INDICATE_FRMR_RECEIVED; TT1; ITi; P_Ct=N2
  2746. NewState = FRMR_RECEIVED
  2747. [Transition]
  2748. Input = SABME
  2749. Predicate =
  2750. Action = INDICATE_RESET; Vi=RIp; Pf=P; TT1; ITi
  2751. NewState = RESETTING
  2752. [Transition]
  2753. Input = UA
  2754. Predicate =
  2755. Action = INDICATE_FRMR_SENT; TT1; ITi; [FRMR](0)
  2756. NewState = FRMR_SENT
  2757. [Transition]
  2758. Input = IS_I_c0|IS_I_r0
  2759. Predicate = Va == Nr
  2760. Action = Dsc_I-fld; [RNR_r](0)
  2761. NewState = CHKP_LOCAL_BUSY
  2762. [Transition]
  2763. Input = IS_I_c0|IS_I_r0
  2764. Predicate = Va != Nr
  2765. Action = Adjust_Ww; Dsc_I-fld; Is_Ct=N2; [RNR_r](0)
  2766. NewState = CHKP_LOCAL_BUSY
  2767. [Transition]
  2768. Input = IS_I_c1
  2769. Predicate = Va == Nr
  2770. Action = Dsc_I-fld; [RNR_r](1)
  2771. NewState = CHKP_LOCAL_BUSY
  2772. [Transition]
  2773. Input = IS_I_c1
  2774. Predicate = Va != Nr
  2775. Action = Adjust_Ww; Dsc_I-fld; Is_Ct=N2; [RNR_r](1)
  2776. NewState = CHKP_LOCAL_BUSY
  2777. [Transition]
  2778. Input = IS_I_r1
  2779. Predicate = Vc==0
  2780. Action = Update_Va_Chkpt; Dsc_I-fld; Start Send_Proc; [RNR_r](0)
  2781. NewState = LOCAL_BUSY
  2782. [Transition]
  2783. Input = IS_I_r1
  2784. Predicate = Vc==DISCp
  2785. Action = Update_Va_Chkpt, TTi, RT1; Dsc_I-fld; Vc=0; P_Ct=N2; [DISC](1)
  2786. NewState = DISCONNECTING
  2787. [Transition]
  2788. Input = OS_I_c0|OS_I_r0
  2789. Predicate = Va == Nr
  2790. Action = Dsc_I-fld
  2791. NewState =
  2792. [Transition]
  2793. Input = OS_I_c0|OS_I_r0
  2794. Predicate = Va != Nr
  2795. Action = Adjust_Ww; Dsc_I-fld; Is_Ct=N2
  2796. NewState =
  2797. [Transition]
  2798. Input = OS_I_c1
  2799. Predicate = Va == Nr
  2800. Action = Dsc_I-fld; [RNR_r](1)
  2801. NewState =
  2802. [Transition]
  2803. Input = OS_I_c1
  2804. Predicate = Va != Nr
  2805. Action = Adjust_Ww; Dsc_I-fld; Is_Ct=N2; [RNR_r](1)
  2806. NewState =
  2807. [Transition]
  2808. Input = OS_I_r1
  2809. Predicate = Vc==0
  2810. Action = Update_Va_Chkpt; Dsc_I-fld; Start Send_Proc
  2811. NewState = REJECT_LOCAL_BUSY
  2812. [Transition]
  2813. Input = OS_I_r1
  2814. Predicate = Vc==DISCp
  2815. Action = Update_Va_Chkpt, TTi, RT1; Dsc_I-fld; Vc=0; P_Ct=N2; [DISC](1)
  2816. NewState = DISCONNECTING
  2817. [Transition]
  2818. Input = REJ_c0 | REJ_r0
  2819. Predicate = Va != Nr
  2820. Action = Resend Packets
  2821. NewState =
  2822. [Transition]
  2823. Input = REJ_c1
  2824. Predicate = Va == Nr
  2825. Action = [RNR_r](1)
  2826. NewState =
  2827. [Transition]
  2828. Input = REJ_c1
  2829. Predicate = Va != Nr
  2830. Action = Resend Packets; [RNR_r](1)
  2831. NewState =
  2832. [Transition]
  2833. Input = REJ_c1
  2834. Predicate = Vc == 0
  2835. Action = Update_Va_Chkpt; Vs=Nr; Start Send_Proc
  2836. NewState = REJECT_LOCAL_BUSY
  2837. [Transition]
  2838. Input = REJ_r1
  2839. Predicate = Vc==DISCp
  2840. Action = Update_Va_Chkpt, TTi, RT1; Vc=0; P_Ct=N2; [DISC](1)
  2841. NewState = DISCONNECTING
  2842. [Transition]
  2843. Input = RNR_c0 | RNR_r0
  2844. Predicate = Va == Nr
  2845. Action = Vb=LRb; Is_Ct=N2
  2846. NewState =
  2847. [Transition]
  2848. Input = RNR_c0 | RNR_r0
  2849. Predicate = Va != Nr
  2850. Action = Adjust_Ww; Vb=LRb; Is_Ct=N2
  2851. NewState =
  2852. [Transition]
  2853. Input = RNR_c1
  2854. Predicate = Va == Nr
  2855. Action = Vb=LRb; Is_Ct=N2; [RNR_r](1)
  2856. NewState =
  2857. [Transition]
  2858. Input = RNR_c1
  2859. Predicate = Va != Nr
  2860. Action = Adjust_Ww; Vb=LRb; Is_Ct=N2; [RNR_r](1)
  2861. NewState =
  2862. [Transition]
  2863. Input = RNR_r1
  2864. Predicate = Vc==0
  2865. Action = Update_Va_Chkpt; Vb=LRb; Is_Ct=N2
  2866. NewState = REJECT_LOCAL_REMOTE_BUSY
  2867. [Transition]
  2868. Input = RNR_r1
  2869. Predicate = Vc==DISCp
  2870. Action = Update_Va_Chkpt, TTi, RT1; Vb=Rb; Vc=0; P_Ct=N2; [DISC](1)
  2871. NewState = DISCONNECTING
  2872. [Transition]
  2873. Input = RR_c0 | RR_r0
  2874. Predicate = Va == Nr
  2875. Action = ;
  2876. NewState =
  2877. [Transition]
  2878. Input = RR_c0 | RR_r0
  2879. Predicate = Va != Nr
  2880. Action = Adjust_Ww
  2881. NewState =
  2882. [Transition]
  2883. Input = RR_c1
  2884. Predicate = Va == Nr
  2885. Action = [RNR_r](1)
  2886. NewState =
  2887. [Transition]
  2888. Input = RR_c1
  2889. Predicate = Va != Nr
  2890. Action = Adjust_Ww; Is_Ct=N2; [RNR_r](1)
  2891. NewState =
  2892. [Transition]
  2893. Input = RR_r1
  2894. Predicate = Vc==0
  2895. Action = INDICATE_REMOTE_READY; Update_Va_Chkpt; Start Send_Proc
  2896. NewState = REJECT_LOCAL_BUSY
  2897. [Transition]
  2898. Input = RR_r1
  2899. Predicate = Vc==DISCp
  2900. Action = Update_Va_Chkpt, TTi, RT1; Vc=0; P_Ct=N2; [DISC](1)
  2901. NewState = DISCONNECTING
  2902. ;***************** CHECKPOINTING + CLEARING(18) ******************
  2903. [[State]]
  2904. Name = CHKP_CLEARING
  2905. [Transition]
  2906. Input = ACTIVATE_LS | DEACTIVATE_LS
  2907. Predicate =
  2908. Action = Logical Error
  2909. NewState =
  2910. [Transition]
  2911. Input = ENTER_LCL_Busy
  2912. Predicate =
  2913. Action = Vb=Lb; [RNR_r](0)
  2914. NewState = CHKP_LOCAL_BUSY
  2915. [Transition]
  2916. Input = EXIT_LCL_Busy
  2917. Predicate =
  2918. Action = Logical Error
  2919. NewState =
  2920. [Transition]
  2921. Input = LPDU_INVALID_r | LPDU_INVALID_c0
  2922. Predicate =
  2923. Action = INDICATE_FRMR_SENT; TT1; ITi; VWXYZ=0x01; [FRMR](0)
  2924. NewState = FRMR_SENT
  2925. [Transition]
  2926. Input = LPDU_INVALID_c1
  2927. Predicate =
  2928. Action = INDICATE_FRMR_SENT; TT1; ITi; VWXYZ=0x01; [FRMR](1)
  2929. NewState = FRMR_SENT
  2930. ; [Transition]
  2931. ; Input = SEND_BTU
  2932. ; Predicate =
  2933. ; Action = [Queue_I_LPDU]
  2934. ; NewState =
  2935. [Transition]
  2936. Input = SET_ABME
  2937. Predicate =
  2938. Action = Logical Error
  2939. NewState =
  2940. [Transition]
  2941. Input = SET_ADM
  2942. Predicate = Vc==0
  2943. Action = Vc=DISCp
  2944. NewState =
  2945. [Transition]
  2946. Input = SET_ADM
  2947. Predicate = Vc!=0
  2948. Action = Logical Error
  2949. NewState =
  2950. [Transition]
  2951. Input = Ti_Expired
  2952. Predicate =
  2953. Action = Logical Error
  2954. NewState =
  2955. [Transition]
  2956. Input = T1_Expired
  2957. Predicate = P_Ct==0
  2958. Action = INDICATE_LINK_LOST; ITi
  2959. NewState = DISCONNECTED
  2960. [Transition]
  2961. Input = T1_Expired
  2962. Predicate = P_Ct!=0
  2963. Action = IT1; P_Ct--; Vp=Vs; Stop Send_Proc; [RR_c](1)
  2964. NewState =
  2965. [Transition]
  2966. Input = T2_Expired
  2967. Predicate =
  2968. Action = Logical Error
  2969. NewState =
  2970. [Transition]
  2971. Input = DISC0|DISC1
  2972. Predicate =
  2973. Action = INDICATE_DM_DISC_RECEIVED; TT1; ITi; [UA](P)
  2974. NewState = DISCONNECTED
  2975. [Transition]
  2976. Input = DM0|DM1
  2977. Predicate =
  2978. Action = INDICATE_DM_DISC_RECEIVED; TT1; ITi
  2979. NewState = DISCONNECTED
  2980. [Transition]
  2981. Input = FRMR
  2982. Predicate =
  2983. Action = INDICATE_FRMR_RECEIVED; TT1; ITi; P_Ct=N2
  2984. NewState = FRMR_RECEIVED
  2985. [Transition]
  2986. Input = SABME
  2987. Predicate =
  2988. Action = INDICATE_RESET; Vi=RIp; Pf=P; TT1; ITi
  2989. NewState = RESETTING
  2990. [Transition]
  2991. Input = UA
  2992. Predicate = Vi!=ISp
  2993. Action = INDICATE_FRMR_SENT; TT1; ITi; [FRMR](0)
  2994. NewState = FRMR_SENT
  2995. [Transition]
  2996. Input = UA
  2997. Predicate = Vi==ISp
  2998. Action = Ignore_LPDU
  2999. NewState =
  3000. [Transition]
  3001. Input = IS_I_c0|IS_I_r0
  3002. Predicate = Va == Nr
  3003. Action = Rcv_BTU; [Send_ACK]
  3004. NewState = CHECKPOINTING
  3005. [Transition]
  3006. Input = IS_I_c0|IS_I_r0
  3007. Predicate = Va != Nr
  3008. Action = Adjust_Ww; Rcv_BTU; Is_Ct=N2; [Send_ACK]
  3009. NewState = CHECKPOINTING
  3010. [Transition]
  3011. Input = IS_I_c1
  3012. Predicate = Va == Nr
  3013. Action = Rcv_BTU; [RR_r](1)
  3014. NewState = CHECKPOINTING
  3015. [Transition]
  3016. Input = IS_I_c1
  3017. Predicate = Va != Nr
  3018. Action = Adjust_Ww; Rcv_BTU; Is_Ct=N2; [RR_r](1)
  3019. NewState = CHECKPOINTING
  3020. [Transition]
  3021. Input = IS_I_r1
  3022. Predicate = Vc==0
  3023. Action = Update_Va_Chkpt; Rcv_BTU; Start Send_Proc; [Send_ACK]
  3024. NewState = LINK_OPENED
  3025. [Transition]
  3026. Input = IS_I_r1
  3027. Predicate = Vc==DISCp
  3028. Action = Update_Va_Chkpt, TTi, RT1; Dsc_I-fld; Vc=0; P_Ct=N2; [DISC](1)
  3029. NewState = DISCONNECTING
  3030. [Transition]
  3031. Input = OS_I_c0|OS_I_r0
  3032. Predicate = Va == Nr
  3033. Action = Dsc_I-fld; [REJ_r](0)
  3034. NewState = CHKP_REJECT
  3035. [Transition]
  3036. Input = OS_I_c0|OS_I_r0
  3037. Predicate = Va != Nr
  3038. Action = Adjust_Ww; Dsc_I-fld; Is_Ct=N2; [REJ_r](0)
  3039. NewState = CHKP_REJECT
  3040. [Transition]
  3041. Input = OS_I_c1
  3042. Predicate = Va == Nr
  3043. Action = Dsc_I-fld; [REJ_r](1)
  3044. NewState = CHKP_REJECT
  3045. [Transition]
  3046. Input = OS_I_c1
  3047. Predicate = Va != Nr
  3048. Action = Adjust_Ww; Dsc_I-fld; Is_Ct=N2; [REJ_r](1)
  3049. NewState = CHKP_REJECT
  3050. [Transition]
  3051. Input = OS_I_r1
  3052. Predicate = Vc==0
  3053. Action = Update_Va_Chkpt; Dsc_I-fld; Start Send_Proc; [REJ_r](0)
  3054. NewState = REJECTION
  3055. [Transition]
  3056. Input = OS_I_r1
  3057. Predicate = Vc==DISCp
  3058. Action = Update_Va_Chkpt, TTi, RT1; Dsc_I-fld; Vc=0; P_Ct=N2; [DISC](1)
  3059. NewState = DISCONNECTING
  3060. [Transition]
  3061. Input = REJ_c0 | REJ_r0
  3062. Predicate = Va != Nr
  3063. Action = Is_Ct=N2; Resend Packets
  3064. NewState =
  3065. [Transition]
  3066. Input = REJ_c1
  3067. Predicate = Va == Nr
  3068. Action = [RR_r](1)
  3069. NewState =
  3070. [Transition]
  3071. Input = REJ_c1
  3072. Predicate = Va != Nr
  3073. Action = Resend Packets; Is_Ct=N2; [RR_r](1)
  3074. NewState =
  3075. [Transition]
  3076. Input = REJ_r1
  3077. Predicate = Vc==0
  3078. Action = Update_Va_Chkpt, RT1; Vp=Nr; [RR_c](1)
  3079. NewState = CHECKPOINTING
  3080. [Transition]
  3081. Input = RNR_c0 | RNR_r0
  3082. Predicate = Va == Nr
  3083. Action = Vb=Rb
  3084. NewState =
  3085. [Transition]
  3086. Input = RNR_c0 | RNR_r0
  3087. Predicate = Va != Nr
  3088. Action = Adjust_Ww; Is_Ct=N2; Vb=Rb
  3089. NewState =
  3090. [Transition]
  3091. Input = RNR_c1
  3092. Predicate = Va == Nr
  3093. Action = Vb=Rb; [RR_r](1)
  3094. NewState =
  3095. [Transition]
  3096. Input = RNR_c1
  3097. Predicate = Va != Nr
  3098. Action = Adjust_Ww; Vb=Rb; Is_Ct=N2; [RR_r](1)
  3099. NewState =
  3100. [Transition]
  3101. Input = RNR_r1
  3102. Predicate = Vc==0
  3103. Action = Update_Va_Chkpt, RT1; Vp=Vs; [RR_c](1)
  3104. NewState = CHECKPOINTING
  3105. [Transition]
  3106. Input = RR_c0 | RR_r0
  3107. Predicate = Va == Nr
  3108. Action = ;
  3109. NewState =
  3110. [Transition]
  3111. Input = RR_c0 | RR_r0
  3112. Predicate = Va != Nr
  3113. Action = Adjust_Ww; Is_Ct=N2
  3114. NewState =
  3115. [Transition]
  3116. Input = RR_c1
  3117. Predicate = Va == Nr
  3118. Action = [RR_r](1)
  3119. NewState =
  3120. [Transition]
  3121. Input = RR_c1
  3122. Predicate = Va != Nr
  3123. Action = Adjust_Ww; Is_Ct=N2; [RR_r](1)
  3124. NewState =
  3125. [Transition]
  3126. Input = RR_r1
  3127. Predicate = Vc==0
  3128. Action = Update_Va_Chkpt, RT1; Vp=Vs; [RR_c](1)
  3129. NewState = CHECKPOINTING
  3130. [Transition]
  3131. Input = REJ_r1|RNR_r1|RR_r1
  3132. Predicate = Vc==DISCp
  3133. Action = Update_Va_Chkpt, RT1; Vc=0; P_Ct=N2; [DISC](1)
  3134. NewState = DISCONNECTING
  3135. ;***************** CHECKPOINTING + REJECTION + CLEARING(19) **************
  3136. [[State]]
  3137. Name = CHKP_REJECT_CLEARING
  3138. [Transition]
  3139. Input = ACTIVATE_LS | DEACTIVATE_LS
  3140. Predicate =
  3141. Action = Logical Error
  3142. NewState =
  3143. [Transition]
  3144. Input = ENTER_LCL_Busy
  3145. Predicate =
  3146. Action = Vb=Lb; [RNR_r](0)
  3147. NewState = CHKP_REJECT_LOCAL_BUSY
  3148. [Transition]
  3149. Input = EXIT_LCL_Busy
  3150. Predicate =
  3151. Action = Logical Error
  3152. NewState =
  3153. [Transition]
  3154. Input = LPDU_INVALID_r | LPDU_INVALID_c0
  3155. Predicate =
  3156. Action = INDICATE_FRMR_SENT; TT1; ITi; VWXYZ=0x01; [FRMR](0)
  3157. NewState = FRMR_SENT
  3158. [Transition]
  3159. Input = LPDU_INVALID_c1
  3160. Predicate =
  3161. Action = INDICATE_FRMR_SENT; TT1; ITi; VWXYZ=0x01; [FRMR](1)
  3162. NewState = FRMR_SENT
  3163. ; [Transition]
  3164. ; Input = SEND_BTU
  3165. ; Predicate =
  3166. ; Action = [Queue_I_LPDU]
  3167. ; NewState =
  3168. [Transition]
  3169. Input = SET_ABME
  3170. Predicate =
  3171. Action = Logical Error
  3172. NewState =
  3173. [Transition]
  3174. Input = SET_ADM
  3175. Predicate = Vc==0
  3176. Action = Vc=DISCp
  3177. NewState =
  3178. [Transition]
  3179. Input = SET_ADM
  3180. Predicate = Vc!=0
  3181. Action = Logical Error
  3182. NewState =
  3183. [Transition]
  3184. Input = Ti_Expired
  3185. Predicate =
  3186. Action = Logical Error
  3187. NewState =
  3188. [Transition]
  3189. Input = T1_Expired
  3190. Predicate = P_Ct==0
  3191. Action = INDICATE_LINK_LOST; ITi
  3192. NewState = DISCONNECTED
  3193. [Transition]
  3194. Input = T1_Expired
  3195. Predicate = P_Ct!=0
  3196. Action = IT1; P_Ct--; Vp=Vs; Stop Send_Proc; [RR_c](1)
  3197. NewState =
  3198. [Transition]
  3199. Input = T2_Expired
  3200. Predicate =
  3201. Action = Logical Error
  3202. NewState =
  3203. [Transition]
  3204. Input = DISC0|DISC1
  3205. Predicate =
  3206. Action = INDICATE_DM_DISC_RECEIVED; TT1; ITi; [UA](P)
  3207. NewState = DISCONNECTED
  3208. [Transition]
  3209. Input = DM0|DM1
  3210. Predicate =
  3211. Action = INDICATE_DM_DISC_RECEIVED; TT1; ITi
  3212. NewState = DISCONNECTED
  3213. [Transition]
  3214. Input = FRMR
  3215. Predicate =
  3216. Action = INDICATE_FRMR_RECEIVED; TT1; ITi; P_Ct=N2
  3217. NewState = FRMR_RECEIVED
  3218. [Transition]
  3219. Input = SABME
  3220. Predicate =
  3221. Action = INDICATE_RESET; Vi=RIp; Pf=P; TT1; ITi
  3222. NewState = RESETTING
  3223. [Transition]
  3224. Input = UA
  3225. Predicate =
  3226. Action = INDICATE_FRMR_SENT; TT1; ITi; [FRMR](0)
  3227. NewState = FRMR_SENT
  3228. [Transition]
  3229. Input = IS_I_c0|IS_I_r0
  3230. Predicate = Va == Nr
  3231. Action = Rcv_BTU; [Send_ACK]
  3232. NewState = CHECKPOINTING
  3233. [Transition]
  3234. Input = IS_I_c0|IS_I_r0
  3235. Predicate = Va != Nr
  3236. Action = Adjust_Ww; Rcv_BTU; Is_Ct=N2; [Send_ACK]
  3237. NewState = CHECKPOINTING
  3238. [Transition]
  3239. Input = IS_I_c1
  3240. Predicate = Va == Nr
  3241. Action = Rcv_BTU; [RR_r](1)
  3242. NewState = CHECKPOINTING
  3243. [Transition]
  3244. Input = IS_I_c1
  3245. Predicate = Va != Nr
  3246. Action = Adjust_Ww; Rcv_BTU; Is_Ct=N2; [RR_r](1)
  3247. NewState = CHECKPOINTING
  3248. [Transition]
  3249. Input = IS_I_r1
  3250. Predicate = Vc==0
  3251. Action = Update_Va_Chkpt; Rcv_BTU; Start Send_Proc; [Send_ACK]
  3252. NewState = LINK_OPENED
  3253. [Transition]
  3254. Input = IS_I_r1
  3255. Predicate = Vc==DISCp
  3256. Action = Update_Va_Chkpt, RT1; Dsc_I-fld; Vc=0; P_Ct=N2; [DISC](1)
  3257. NewState = DISCONNECTING
  3258. [Transition]
  3259. Input = OS_I_c0|OS_I_r0
  3260. Predicate = Va == Nr
  3261. Action = Dsc_I-fld
  3262. NewState = CHKP_REJECT
  3263. [Transition]
  3264. Input = OS_I_c0|OS_I_r0
  3265. Predicate = Va != Nr
  3266. Action = Adjust_Ww; Dsc_I-fld; Is_Ct=N2
  3267. NewState = CHKP_REJECT
  3268. [Transition]
  3269. Input = OS_I_c1
  3270. Predicate = Va == Nr
  3271. Action = Dsc_I-fld; [RR_r](1)
  3272. NewState = CHKP_REJECT
  3273. [Transition]
  3274. Input = OS_I_c1
  3275. Predicate = Va != Nr
  3276. Action = Adjust_Ww; Dsc_I-fld; Is_Ct=N2; [RR_r](1)
  3277. NewState = CHKP_REJECT
  3278. [Transition]
  3279. Input = OS_I_r1
  3280. Predicate = Vc==0
  3281. Action = Update_Va_Chkpt; Dsc_I-fld; Start Send_Proc
  3282. NewState = REJECTION
  3283. [Transition]
  3284. Input = OS_I_r1
  3285. Predicate = Vc==DISCp
  3286. Action = Update_Va_Chkpt, RT1; Dsc_I-fld; Vc=0; P_Ct=N2; [DISC](1)
  3287. NewState = DISCONNECTING
  3288. [Transition]
  3289. Input = REJ_c0 | REJ_r0
  3290. Predicate = Va != Nr
  3291. Action = Resend Packets; Is_Ct=N2
  3292. NewState =
  3293. [Transition]
  3294. Input = REJ_c1
  3295. Predicate = Va == Nr
  3296. Action = [RR_r](1)
  3297. NewState =
  3298. [Transition]
  3299. Input = REJ_c1
  3300. Predicate = Va != Nr
  3301. Action = Resend Packets; Is_Ct=N2; [RR_r](1)
  3302. NewState =
  3303. [Transition]
  3304. Input = REJ_r1
  3305. Predicate = Vc==0
  3306. Action = Update_Va_Chkpt, RT1, Vp=Nr; Is_Ct--; [RR_c](1)
  3307. NewState = CHKP_REJECT
  3308. [Transition]
  3309. Input = RNR_c0 | RNR_r0
  3310. Predicate = Va == Nr
  3311. Action = Vb=Rb
  3312. NewState =
  3313. [Transition]
  3314. Input = RNR_c0 | RNR_r0
  3315. Predicate = Va != Nr
  3316. Action = Adjust_Ww; Is_Ct=N2; Vb=Rb
  3317. NewState =
  3318. [Transition]
  3319. Input = RNR_c1
  3320. Predicate = Va == Nr
  3321. Action = Vb=Rb; Is_Ct=N2; [RR_r](1)
  3322. NewState =
  3323. [Transition]
  3324. Input = RNR_c1
  3325. Predicate = Va != Nr
  3326. Action = Adjust_Ww; Is_Ct=N2; Vb=Rb; [RR_r](1)
  3327. NewState =
  3328. [Transition]
  3329. Input = RNR_r1
  3330. Predicate = Vc==0
  3331. Action = Update_Va_Chkpt, RT1, Vp=Vs; Is_Ct=N2; [RR_c](1)
  3332. NewState = CHKP_REJECT
  3333. [Transition]
  3334. Input = RR_c0 | RR_r0
  3335. Predicate = Va == Nr
  3336. Action = ;
  3337. NewState =
  3338. [Transition]
  3339. Input = RR_c0 | RR_r0
  3340. Predicate = Va != Nr
  3341. Action = Adjust_Ww; Is_Ct=N2
  3342. NewState =
  3343. [Transition]
  3344. Input = RR_c1
  3345. Predicate = Va == Nr
  3346. Action = [RR_r](1)
  3347. NewState =
  3348. [Transition]
  3349. Input = RR_c1
  3350. Predicate = Va != Nr
  3351. Action = Adjust_Ww; Is_Ct=N2; [RR_r](1)
  3352. NewState =
  3353. [Transition]
  3354. Input = RR_r1
  3355. Predicate = Vc==0
  3356. Action = Update_Va_Chkpt, RT1, Vp=Vs; [RR_c](1)
  3357. NewState = CHKP_REJECT
  3358. [Transition]
  3359. Input = REJ_r1|RNR_r1|RR_r1
  3360. Predicate = Vc==DISCp
  3361. Action = Update_Va_Chkpt, RT1; Vc=0; P_Ct=N2; [DISC](1)
  3362. NewState = DISCONNECTING
  3363. ;***************** REJECTION+LOCAL_BUSY+REMOTE_BUSY (20) ******************
  3364. [[State]]
  3365. Name = REJECT_LOCAL_REMOTE_BUSY
  3366. [Transition]
  3367. Input = ACTIVATE_LS | DEACTIVATE_LS | ENTER_LCL_Busy
  3368. Predicate =
  3369. Action = Logical Error
  3370. NewState =
  3371. [Transition]
  3372. Input = EXIT_LCL_Busy
  3373. Predicate =
  3374. Action = Vb=Rb; TTi; IT1; P_Ct=N2; Vp=Vs; [RR_c](1)
  3375. NewState = CHKP_REJECT
  3376. [Transition]
  3377. Input = LPDU_INVALID_r | LPDU_INVALID_c0
  3378. Predicate =
  3379. Action = INDICATE_FRMR_SENT; TT1; RTi; VWXYZ=0x01; [FRMR](0)
  3380. NewState = FRMR_SENT
  3381. [Transition]
  3382. Input = LPDU_INVALID_c1
  3383. Predicate =
  3384. Action = INDICATE_FRMR_SENT; TT1; RTi; VWXYZ=0x01; [FRMR](1)
  3385. NewState = FRMR_SENT
  3386. ; [Transition]
  3387. ; Input = SEND_BTU
  3388. ; Predicate =
  3389. ; Action = [Queue_I_LPDU]
  3390. ; NewState =
  3391. [Transition]
  3392. Input = SET_ABME
  3393. Predicate =
  3394. Action = Logical Error
  3395. NewState =
  3396. [Transition]
  3397. Input = SET_ADM
  3398. Predicate =
  3399. Action = TTi; RT1; P_Ct=N2; [DISC](1)
  3400. NewState = DISCONNECTING
  3401. [Transition]
  3402. Input = Ti_Expired
  3403. Predicate =
  3404. Action = IT1; P_Ct=N2; Vp=Vs; [RNR_c](1)
  3405. NewState = CHKP_REJECT_LOCAL_BUSY
  3406. [Transition]
  3407. Input = T1_Expired
  3408. Predicate = Is_Ct>0
  3409. Action = IT1; P_Ct=N2; Vp=Vs; [RNR_c](1)
  3410. NewState = CHKP_REJECT_LOCAL_BUSY
  3411. [Transition]
  3412. Input = T1_Expired
  3413. Predicate = Is_Ct<=0
  3414. Action = P_Ct=N2; IT1; [DISC](1)
  3415. NewState = DISCONNECTING
  3416. [Transition]
  3417. Input = T2_Expired
  3418. Predicate =
  3419. Action = Logical Error
  3420. NewState =
  3421. [Transition]
  3422. Input = DISC0|DISC1
  3423. Predicate =
  3424. Action = INDICATE_DM_DISC_RECEIVED; TT1; RTi; [UA](P)
  3425. NewState = DISCONNECTED
  3426. [Transition]
  3427. Input = DM0|DM1
  3428. Predicate =
  3429. Action = INDICATE_DM_DISC_RECEIVED; TT1; RTi
  3430. NewState = DISCONNECTED
  3431. [Transition]
  3432. Input = FRMR
  3433. Predicate =
  3434. Action = INDICATE_FRMR_RECEIVED; TT1; RTi
  3435. NewState = FRMR_RECEIVED
  3436. [Transition]
  3437. Input = SABME
  3438. Predicate =
  3439. Action = INDICATE_RESET; Vi=RIp; Pf=P; TT1; RTi
  3440. NewState = RESETTING
  3441. [Transition]
  3442. Input = UA
  3443. Predicate =
  3444. Action = INDICATE_FRMR_SENT; TT1; RTi; [FRMR](0)
  3445. NewState = FRMR_SENT
  3446. [Transition]
  3447. Input = IS_I_c0|IS_I_r0|IS_I_r1
  3448. Predicate =
  3449. Action = INDICATE_REMOTE_READY; Update_Va; Dsc_I-fld; [RNR_r](0)
  3450. NewState = LOCAL_REMOTE_BUSY
  3451. [Transition]
  3452. Input = IS_I_c1
  3453. Predicate =
  3454. Action = INDICATE_REMOTE_READY; Update_Va; Dsc_I-fld; [RNR_r](1)
  3455. NewState = LOCAL_REMOTE_BUSY
  3456. [Transition]
  3457. Input = OS_I_c0|OS_I_r0|OS_I_r1
  3458. Predicate =
  3459. Action = Update_Va; Dsc_I-fld
  3460. NewState =
  3461. [Transition]
  3462. Input = OS_I_c1
  3463. Predicate =
  3464. Action = Update_Va; Dsc_I-fld; [RNR_r](1)
  3465. NewState =
  3466. [Transition]
  3467. Input = REJ_c0 | REJ_r0 | REJ_r1
  3468. Predicate =
  3469. Action = INDICATE_REMOTE_READY; Resend Packets, Update_Va;\
  3470. Is_Ct--; Vb=Lb; Start Send_Proc
  3471. NewState = REJECT_LOCAL_BUSY
  3472. [Transition]
  3473. Input = REJ_c1
  3474. Predicate =
  3475. Action = INDICATE_REMOTE_READY; Resend Packets, Update_Va;\
  3476. Is_Ct--; Vb=Lb; Start Send_Proc; [RNR_r](1)
  3477. NewState = REJECT_LOCAL_BUSY
  3478. [Transition]
  3479. Input = RNR_c0|RNR_r0|RNR_r1
  3480. Predicate =
  3481. Action = Update_Va
  3482. NewState = REJECT_LOCAL_BUSY
  3483. [Transition]
  3484. Input = RNR_c1
  3485. Predicate =
  3486. Action = Update_Va; [RNR_r](1)
  3487. NewState = REJECT_LOCAL_REMOTE_BUSY
  3488. [Transition]
  3489. Input = RR_c1
  3490. Predicate = Nr != Vs
  3491. Action = INDICATE_REMOTE_READY; Vb=Lb; RT1; Update_Va, \
  3492. Send_RNR_c(1); [RNR_r](1)
  3493. NewState = CHKP_REJECT_LOCAL_BUSY
  3494. [Transition]
  3495. Input = RR_c1
  3496. Predicate = Nr == Vs
  3497. Action = INDICATE_REMOTE_READY; Vb=Lb; Update_Va; [RNR_r](1)
  3498. NewState = REJECT_LOCAL_BUSY
  3499. [Transition]
  3500. Input = RR_c0|RR_r0|RR_r1
  3501. Predicate = Nr != Vs
  3502. Action = INDICATE_REMOTE_READY; Vb=Lb; Update_Va; [RNR_c](1)
  3503. NewState = CHKP_REJECT_LOCAL_BUSY
  3504. [Transition]
  3505. Input = RR_c0|RR_r0|RR_r1
  3506. Predicate = Nr == Vs
  3507. Action = INDICATE_REMOTE_READY; Vb=Lb; Update_Va
  3508. NewState = REJECT_LOCAL_BUSY
  3509. ;******************** FRMR_RECEIVED (21) ***********************
  3510. [[State]]
  3511. Name = FRMR_RECEIVED
  3512. [Transition]
  3513. Input = ACTIVATE_LS | DEACTIVATE_LS
  3514. Predicate =
  3515. Action = Logical Error
  3516. NewState =
  3517. [Transition]
  3518. Input = ENTER_LCL_Busy
  3519. Predicate =
  3520. Action = Vb=Lb
  3521. NewState =
  3522. [Transition]
  3523. Input = EXIT_LCL_Busy
  3524. Predicate =
  3525. Action = Vb=0
  3526. NewState =
  3527. [Transition]
  3528. Input = LPDU_INVALID
  3529. Predicate =
  3530. Action = Ignore_LPDU
  3531. NewState =
  3532. ; [Transition]
  3533. ; Input = SEND_BTU
  3534. ; Predicate =
  3535. ; Action = Logical Error
  3536. ; NewState =
  3537. [Transition]
  3538. Input = SET_ABME
  3539. Predicate =
  3540. Action = Vi=LIp; TTi; IT1; P_Ct=N2; [SABME](1)
  3541. NewState = LINK_OPENING
  3542. [Transition]
  3543. Input = SET_ADM
  3544. Predicate =
  3545. Action = TTi; IT1; P_Ct=N2; [DISC](1)
  3546. NewState = DISCONNECTING
  3547. [Transition]
  3548. Input = Ti_Expired
  3549. Predicate = P_Ct!=0
  3550. Action = ITi; P_Ct--
  3551. NewState =
  3552. [Transition]
  3553. Input = Ti_Expired
  3554. Predicate = P_Ct==0
  3555. Action = INDICATE_TI_TIMER_EXPIRED; IT1; P_Ct=N2; [DISC](1)
  3556. NewState = DISCONNECTING
  3557. [Transition]
  3558. Input = T1_Expired|T2_Expired
  3559. Predicate =
  3560. Action = Logical Error
  3561. NewState =
  3562. [Transition]
  3563. Input = DISC0|DISC1
  3564. Predicate =
  3565. Action = INDICATE_TI_TIMER_EXPIRED; RTi; [UA](P)
  3566. NewState = DISCONNECTED
  3567. [Transition]
  3568. Input = DM0|DM1
  3569. Predicate =
  3570. Action = INDICATE_TI_TIMER_EXPIRED; RTi
  3571. NewState = DISCONNECTED
  3572. [Transition]
  3573. Input = FRMR
  3574. Predicate =
  3575. Action = INDICATE_FRMR_RECEIVED
  3576. NewState =
  3577. [Transition]
  3578. Input = SABME
  3579. Predicate =
  3580. Action = INDICATE_RESET; Vi=RIp; Pf=P; RTi
  3581. NewState = RESETTING
  3582. [Transition]
  3583. Input = I_c|I_r
  3584. Predicate =
  3585. Action = Ignore_LPDU
  3586. NewState =
  3587. [Transition]
  3588. Input = REJ|RNR|RR
  3589. Predicate =
  3590. Action = Ignore_LPDU
  3591. NewState =