📄 pseudocode
字号:
;============================================================================;; translate this with ; cat pseudocode | sed -f act2num | awk -f compile.awk >pseudocode.h;; actionname pseudocode;;============================================================================ADM1 SEND_SABME_CMD(P=X) P_FLAG:=P START_ACK_TIMER RETRY_COUNT:=0 S_FLAG:=0;; instructions in ADM2 have been changed:; 1. P_FLAG:=P is probably wrong in doc...; I think it should be F_FLAG:=P the way it is in CONN3; 2. CONNECT_RESPONSE has been wired in here,; CONN1 is no longer referenced;ADM2 F_FLAG:=P SEND_UA_RSP(F=X) V(S):=0 V(R):=0 RETRY_COUNT:=0 P_FLAG:=0 REMOTE_BUSY:=0 CONNECT_INDICATIONADM3 SEND_DM_RSP(F=X)ADM4 SEND_DM_RSP(F=X)ADM5 NOP;============================================================================;CONN1 SEND_UA_RSP(F=X); V(S):=0; V(R):=0; RETRY_COUNT:=0; P_FLAG:=0; REMOTE_BUSY:=0CONN2 SEND_DM_RSP(F=X)CONN3 F_FLAG:=PCONN4 DISCONNECT_INDICATIONCONN5 NOP;============================================================================RESWAIT1 SEND_SABME_CMD(P=X) P_FLAG:=P START_ACK_TIMER RETRY_COUNT:=0RESWAIT2 SEND_UA_RSP(F=X) V(S):=0 V(R):=0 RETRY_COUNT:=0 P_FLAG:=0 REMOTE_BUSY:=0 RESET_CONFIRMRESWAIT3 SEND_DISC_CMD(P=X) P_FLAG:=P START_ACK_TIMER RETRY_COUNT:=0RESWAIT4 SEND_DM_RSP(F=X) RESWAIT5 DISCONNECT_INDICATIONRESWAIT6 S_FLAG:=1 F_FLAG:=PRESWAIT7 SEND_DM_RSP(F=X) DISCONNECT_INDICATIONRESWAIT8 NOP;============================================================================RESCHK1 SEND_UA_RSP(F=X) V(S):=0 V(R):=0 RETRY_COUNT:=0 P_FLAG:=0 REMOTE_BUSY:=0RESCHK2 SEND_DM_RSP(F=X)RESCHK3 DISCONNECT_INDICATIONRESCHK4 F_FLAG:=PRESCHK5 SEND_DM_RSP(F=X) DISCONNECT_INDICATIONRESCHK6 NOP;============================================================================SETUP1 SEND_UA_RSP(F=X) V(S):=0 V(R):=0 RETRY_COUNT:=0 S_FLAG:=1SETUP2 STOP_ACK_TIMER V(S):=0 V(R):=0 RETRY_COUNT:=0 UPDATE_P_FLAG CONNECT_CONFIRM REMOTE_BUSY:=0SETUP3 P_FLAG:=0 CONNECT_CONFIRM REMOTE_BUSY:=0SETUP4 SEND_DM_RSP(F=X) DISCONNECT_INDICATION STOP_ACK_TIMERSETUP5 DISCONNECT_INDICATION STOP_ACK_TIMERSETUP6 NOPSETUP7 SEND_SABME_CMD(P=X) P_FLAG:=P START_ACK_TIMER RETRY_COUNT:=RETRY_COUNT+1SETUP8 DISCONNECT_INDICATION;============================================================================RESET1 SEND_UA_RSP(F=X) V(S):=0 V(R):=0 RETRY_COUNT:=0 S_FLAG:=1RESET2 STOP_ACK_TIMER V(S):=0 V(R):=0 RETRY_COUNT:=0 UPDATE_P_FLAG RESET_CONFIRM REMOTE_BUSY:=0RESET3 P_FLAG:=0 RESET_CONFIRM REMOTE_BUSY:=0RESET4 SEND_DM_RSP(F=X) DISCONNECT_INDICATION STOP_ACK_TIMERRESET5 DISCONNECT_INDICATION STOP_ACK_TIMERRESET6 NOPRESET7 SEND_SABME_CMD(P=X) P_FLAG:=P START_ACK_TIMER RETRY_COUNT:=RETRY_COUNT+1RESET8 DISCONNECT_INDICATION;============================================================================D_CONN1 SEND_DM_RSP(F=X) STOP_ACK_TIMERD_CONN2 STOP_ACK_TIMERD_CONN3 SEND_UA_RSP(F=X)D_CONN4 STOP_ACK_TIMERD_CONN5 NOPD_CONN6 SEND_DISC_CMD(P=X) P_FLAG:=P START_ACK_TIMER RETRY_COUNT:=RETRY_COUNT+1D_CONN7 NOP;============================================================================ERR1 RESET_INDICATION(REMOTE) STOP_ACK_TIMER F_FLAG:=PERR2 SEND_UA_RSP(F=X) DISCONNECT_INDICATION STOP_ACK_TIMERERR3 DISCONNECT_INDICATION STOP_ACK_TIMERERR4 RESET_INDICATION(LOCAL) STOP_ACK_TIMER REPORT_STATUS(FRMR_RECEIVED) S_FLAG:=0ERR5 RE-SEND_FRMR_RSP(F=P) START_ACK_TIMERERR6 NOPERR7 RE-SEND_FRMR_RSP(F=0) START_ACK_TIMER RETRY_COUNT:=RETRY_COUNT+1ERR8 S_FLAG:=0 RESET_INDICATION(LOCAL);============================================================================; the shared actions are common to states NORMAL, BUSY, REJECT,; AWAIT, AWAIT_BUSY and AWAIT_REJECT.;============================================================================SH1 SEND_DISC_CMD(P=X) P_FLAG:=P START_ACK_TIMER STOP_OTHER_TIMERS RETRY_COUNT:=0SH2 SEND_SABME_CMD(P=X) P_FLAG:=P START_ACK_TIMER STOP_OTHER_TIMERS RETRY_COUNT:=0 S_FLAG:=0SH3 RESET_INDICATION(REMOTE) F_FLAG:=P STOP_ALL_TIMERSSH4 SEND_UA_RSP(F=X) DISCONNECT_INDICATION STOP_ALL_TIMERSSH5 STOP_ALL_TIMERS RESET_INDICATION(LOCAL) REPORT_STATUS(FRMR_RECEIVED) S_FLAG:=0SH6 DISCONNECT_INDICATION STOP_ALL_TIMERSSH7 SEND_FRMR_RSP(F=X) REPORT_STATUS(FRMR_SENT) START_ACK_TIMER STOP_OTHER_TIMERS RETRY_COUNT:=0SH8 SEND_FRMR_RSP(F=0) REPORT_STATUS(FRMR_SENT) START_ACK_TIMER STOP_OTHER_TIMERS RETRY_COUNT:=0SH9 SEND_FRMR_RSP(F=0) REPORT_STATUS(FRMR_SENT) START_ACK_TIMER STOP_OTHER_TIMERS RETRY_COUNT:=0SH10 SEND_FRMR_RSP(F=X) REPORT_STATUS(FRMR_SENT) START_ACK_TIMER STOP_OTHER_TIMERS RETRY_COUNT:=0SH11 STOP_ALL_TIMERS RESET_INDICATION(LOCAL) S_FLAG:=0;============================================================================NORMAL1 SEND_I_CMD(P=1) START_P_TIMER START_ACK_TIMER_IF_NOT_RUNNING; SEND_I_XXX(X=0); START_ACK_TIMER_IF_NOT_RUNNINGNORMAL2 SEND_I_XXX(X=0) START_ACK_TIMER_IF_NOT_RUNNINGNORMAL3 SEND_RNR_CMD(F=1) START_P_TIMER DATA_FLAG:=0; SEND_RNR_XXX(X=0); DATA_FLAG:=0NORMAL4 SEND_RNR_XXX(X=0) DATA_FLAG:=0NORMAL5 SEND_REJ_XXX(X=0) UPDATE_N(R)_RECEIVED UPDATE_P_FLAG START_REJ_TIMER IF_F=1_CLEAR_REMOTE_BUSY; SEND_REJ_CMD(P=1); UPDATE_N(R)_RECEIVED; START_P_TIMER; START_REJ_TIMER; IF_F=1_CLEAR_REMOTE_BUSYNORMAL6 SEND_REJ_XXX(X=0) UPDATE_N(R)_RECEIVED START_REJ_TIMERNORMAL7 SEND_REJ_RSP(F=1) UPDATE_N(R)_RECEIVED START_REJ_TIMER;; the order of opcodes in NORMAL8 is changed.; the transition table will execute NORMAL8A for incomming pdus; with p/f 1, pdus with pf 0 are treated in NORMAL8B.; NORMAL8A V(R):=V(R)+1 SEND_ACKNOWLEDGE_CMD(P=1) START_P_TIMER UPDATE_N(R)_RECEIVED IF_F=1_CLEAR_REMOTE_BUSY DATA_INDICATION;NORMAL8B V(R):=V(R)+1 UPDATE_P_FLAG SEND_ACKNOWLEDGE_XXX(X=0) UPDATE_N(R)_RECEIVED IF_F=1_CLEAR_REMOTE_BUSY DATA_INDICATION;; the order of opcodes in NORMAL9 is changed NORMAL9 V(R):=V(R)+1 SEND_ACKNOWLEDGE_XXX(X=0) UPDATE_N(R)_RECEIVED DATA_INDICATION;; the order of opcodes in NORMAL10 is changed NORMAL10 V(R):=V(R)+1 SEND_ACKNOWLEDGE_RSP(F=1) UPDATE_N(R)_RECEIVED DATA_INDICATIONNORMAL11 UPDATE_P_FLAG UPDATE_N(R)_RECEIVED CLEAR_REMOTE_BUSYNORMAL12 SEND_ACKNOWLEDGE_RSP(F=1) UPDATE_N(R)_RECEIVED CLEAR_REMOTE_BUSYNORMAL13 UPDATE_P_FLAG UPDATE_N(R)_RECEIVED SET_REMOTE_BUSYNORMAL14 SEND_RR_RSP(F=1) UPDATE_N(R)_RECEIVED SET_REMOTE_BUSYNORMAL15 V(S):=N(R) UPDATE_N(R)_RECEIVED UPDATE_P_FLAG RE-SEND_I_XXX(X=0) CLEAR_REMOTE_BUSY; V(S):=N(R); UPDATE_N(R)_RECEIVED; START_P_TIMER; RE-SEND_I_CMD(P=1); CLEAR_REMOTE_BUSYNORMAL16 V(S):=N(R) UPDATE_N(R)_RECEIVED RE-SEND_I_XXX(X=0) CLEAR_REMOTE_BUSYNORMAL17 V(S):=N(R) UPDATE_N(R)_RECEIVED RE-SEND_I_RSP(F=1) CLEAR_REMOTE_BUSYNORMAL18 SEND_RR_CMD(P=1) START_P_TIMERNORMAL19 P_FLAG:=0; SEND_RR_CMD(P=1); START_P_TIMER; RETRY_COUNT:=RETRY_COUNT+1NORMAL20 SEND_RR_CMD(P=1) START_P_TIMER RETRY_COUNT:=RETRY_COUNT+1;============================================================================BUSY1 SEND_I_CMD(P=1) START_P_TIMER START_ACK_TIMER_IF_NOT_RUNNING; SEND_I_XXX(X=0); START_ACK_TIMER_IF_NOT_RUNNINGBUSY2 SEND_I_XXX(X=0) START_ACK_TIMER_IF_NOT_RUNNINGBUSY3 SEND_REJ_CMD(P=1) START_REJ_TIMER START_P_TIMER; SEND_REJ_XXX(X=0); START_REJ_TIMERBUSY4 SEND_REJ_XXX(X=0) START_REJ_TIMERBUSY5 SEND_RR_CMD(P=1) START_P_TIMER SEND_RR_XXX(X=0)BUSY6 SEND_RR_XXX(X=0)BUSY7 SEND_RR_CMD(P=1) START_P_TIMER SEND_RR_XXX(X=0)BUSY8 SEND_RR_XXX(X=0)BUSY9 OPTIONAL_SEND_RNR_XXX(X=0) UPDATE_P_FLAG UPDATE_N(R)_RECEIVED IF_DATA_FLAG_=0_THEN_DATA_FLAG:=1 IF_F=1_CLEAR_REMOTE_BUSY; SEND_RNR_CMD(P=1); START_P_TIMER; UPDATE_N(R)_RECEIVED; IF_DATA_FLAG_=0_THEN_DATA_FLAG:=1; IF_F=1_CLEAR_REMOTE_BUSYBUSY10 OPTIONAL_SEND_RNR_XXX(X=0) UPDATE_N(R)_RECEIVED IF_DATA_FLAG_=0_THEN_DATA_FLAG:=1BUSY11 SEND_RNR_RSP(F=1) UPDATE_N(R)_RECEIVED IF_DATA_FLAG_=0_THEN_DATA_FLAG:=1BUSY12 SEND_RNR_RSP(F=1) UPDATE_N(R)_RECEIVED IF_DATA_FLAG=2_STOP_REJ_TIMER DATA_FLAG:=1; V(R):=V(R)+1; DATA_INDICATION; SEND_RNR_RSP(F=1); UPDATE_N(R)_RECEIVED; IF_DATA_FLAG=2_STOP_REJ_TIMER; DATA_FLAG:=0BUSY13 OPTIONAL_SEND_RNR_XXX(X=0) UPDATE_P_FLAG UPDATE_N(R)_RECEIVED IF_DATA_FLAG=2_STOP_REJ_TIMER DATA_FLAG:=1 IF_F=1_CLEAR_REMOTE_BUSY; SEND_RNR_CMD(F=1); START_P_TIMER; UPDATE_N(R)_RECEIVED; IF_DATA_FLAG=2_STOP_REJ_TIMER; DATA_FLAG:=1; IF_F=1_CLEAR_REMOTE_BUSY; V(R):=V(R)+1; DATA_INDICATION; SEND_RNR_CMD(F=1); START_P_TIMER; UPDATE_N(R)_RECEIVED; IF_DATA_FLAG=2_STOP_REJ_TIMER; DATA_FLAG:=0; IF_F=1_CLEAR_REMOTE_BUSY; V(R):=V(R)+1; DATA_INDICATION; UPDATE_P_FLAG; OPTIONAL_SEND_RNR_XXX(X=0); UPDATE_N(R)_RECEIVED; IF_DATA_FLAG=2_STOP_REJ_TIMER; DATA_FLAG:=0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -