mirror of https://github.com/lianthony/NT4.0
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.
1872 lines
56 KiB
1872 lines
56 KiB
|
|
/*++
|
|
|
|
Copyright (c) 1991 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
llcsm.c
|
|
|
|
Abstract:
|
|
|
|
The module implements a IEEE 802.2 compatible state machine as
|
|
defined in IBM Token-Ring Architectural reference.
|
|
The most of the code in the module is compliled with finite state machine
|
|
compiler from the IBM state machine definition (llcsm.fsm).
|
|
|
|
DO NOT MODIFY ANY CODE INSIDE:
|
|
- #ifdef FSM_CONST
|
|
- #ifdef FSM_DATA
|
|
- #ifdef FSM_PREDICATE_CASES
|
|
- #ifdef FSM_ACTION_CASES
|
|
|
|
That code is genereated from the definition file of the state machine.
|
|
Any changes in the state machine must be done into 802-2.fsm definition
|
|
file (or to the source files of finite state machine cross compiler, fsmx).
|
|
|
|
Author:
|
|
|
|
Antti Saarenheimo (o-anttis) 23-MAY-1991
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#include <llc.h>
|
|
|
|
//*********************************************************************
|
|
//
|
|
// C- macros for LAN DLC state machine
|
|
//
|
|
enum StateMachineOperMode {
|
|
LLC_NO_OPER = 0,
|
|
LOCAL_INIT_PENDING = 1,
|
|
REMOTE_INIT_PENDING = 2,
|
|
OPER_MODE_PENDING = 4,
|
|
IS_FRAME_PENDING = 8,
|
|
STATE_LOCAL_BUSY = 0x10,
|
|
STATE_REMOTE_BUSY = 0x20,
|
|
STACKED_DISCp_CMD = 0x40
|
|
};
|
|
|
|
#define SEND_RNR_CMD( a ) SendLlcFrame( pLink, DLC_RNR_TOKEN | \
|
|
DLC_TOKEN_COMMAND | a )
|
|
#define SEND_RR_CMD( a ) SendLlcFrame( pLink, DLC_RR_TOKEN | \
|
|
DLC_TOKEN_COMMAND | a )
|
|
#define DLC_REJ_RESPONSE( a ) uchSendId = \
|
|
(UCHAR)(DLC_REJ_TOKEN | DLC_TOKEN_RESPONSE) | (UCHAR)a
|
|
//#define DLC_REJ_COMMAND( a ) uchSendId = \
|
|
(UCHAR)(DLC_REJ_TOKEN | DLC_TOKEN_COMMAND) | (UCHAR)a
|
|
#define DLC_RNR_RESPONSE( a ) uchSendId = \
|
|
(UCHAR)(DLC_RNR_TOKEN | DLC_TOKEN_RESPONSE) | (UCHAR)a
|
|
#define DLC_RNR_COMMAND( a ) uchSendId = \
|
|
(UCHAR)(DLC_RNR_TOKEN | DLC_TOKEN_COMMAND) | (UCHAR)a
|
|
#define DLC_RR_RESPONSE( a ) uchSendId = \
|
|
(UCHAR)(DLC_RR_TOKEN | DLC_TOKEN_RESPONSE) | (UCHAR)a
|
|
#define DLC_RR_COMMAND( a ) uchSendId = \
|
|
(UCHAR)(DLC_RR_TOKEN | DLC_TOKEN_COMMAND) | (UCHAR)a
|
|
#define DLC_DISC(a) uchSendId = (UCHAR)DLC_DISC_TOKEN | (UCHAR)a
|
|
#define DLC_DM(a) uchSendId = (UCHAR)DLC_DM_TOKEN | (UCHAR)a
|
|
#define DLC_FRMR(a) uchSendId = (UCHAR)DLC_FRMR_TOKEN | (UCHAR)a
|
|
#define DLC_SABME(a) uchSendId = (UCHAR)DLC_SABME_TOKEN | (UCHAR)a
|
|
#define DLC_UA(a) uchSendId = (UCHAR)DLC_UA_TOKEN | (UCHAR)a
|
|
#define TimerStartIf( a ) StartTimer( a )
|
|
#define TimerStart( a ) StartTimer( a )
|
|
#define TimerStop( a ) StopTimer( a )
|
|
#define EnableLinkStation( a )
|
|
#define DisableLinkStation( a )
|
|
#define SEND_ACK( a ) uchSendId = SendAck( a )
|
|
|
|
//
|
|
// Stack all event indications, they must be made immediate after
|
|
// the state machine has been run
|
|
//
|
|
#define EVENT_INDICATION( a ) pLink->DlcStatus.StatusCode |= a
|
|
|
|
UCHAR auchLlcCommands[] = {
|
|
LLC_REJ,
|
|
LLC_RNR,
|
|
LLC_RR,
|
|
LLC_DISC,
|
|
LLC_DM,
|
|
LLC_FRMR,
|
|
LLC_SABME,
|
|
LLC_UA
|
|
};
|
|
|
|
#ifdef FSM_DATA
|
|
// Flag for the predicate switch
|
|
#define PC 0x8000
|
|
USHORT aLanLlcStateInput[21][45] = {
|
|
{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 1, 2, 2, 2, 2, 0,
|
|
2, 2, 2, 2, 2},
|
|
{ 13, 13, 3, 3, 3, 3, 14, 14, 3, 3,
|
|
3, 3, 3, 15, 3, 3, 3, 15, 3, 3,
|
|
3, 15, 3, 3, 3, 15, 3, 3, 3, 15,
|
|
3, 3, 3, 3, 2, 4, 5, 6, 2, 0,
|
|
1|PC, 4|PC, 11, 7|PC, 2},
|
|
{ 24, 24, 25, 25, 3, 3, 20|PC, 20|PC, 0, 23|PC,
|
|
27|PC, 0, 27|PC, 30|PC, 33|PC, 0, 33|PC, 36|PC, 45|PC, 0,
|
|
45|PC, 48|PC, 39|PC, 0, 39|PC, 42|PC, 45|PC, 0, 45|PC, 48|PC,
|
|
3, 3, 3, 3, 2, 2, 5, 6, 2, 0,
|
|
2, 9|PC, 12|PC, 15|PC, 2},
|
|
{ 47, 47, 48, 48, 3, 3, 49, 49, 0, 48,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 2, 2, 5, 6, 2, 0,
|
|
2, 2, 2, 51|PC, 2},
|
|
{ 53, 53, 54, 54, 55, 55, 56, 56, 3, 3,
|
|
3, 3, 57, 57, 3, 3, 57, 57, 3, 3,
|
|
57, 57, 3, 3, 57, 57, 3, 3, 57, 57,
|
|
3, 3, 3, 3, 2, 2, 5, 6, 2, 0,
|
|
50, 51, 52, 2, 2},
|
|
{ 66, 66, 67, 67, 68, 68, 69, 69, 70, 70,
|
|
71, 71, 71, 72, 73, 73, 73, 74, 57|PC, 57|PC,
|
|
57|PC, 60|PC, 79, 79, 79, 80, 76, 76, 76, 81,
|
|
59, 59, 59, 60, 2, 2, 58, 2, 61, 0,
|
|
2, 62, 63, 54|PC, 65},
|
|
{ 88, 88, 89, 89, 90, 90, 91, 91, 92, 92,
|
|
93, 93, 93, 94, 93, 93, 93, 94, 57|PC, 57|PC,
|
|
57|PC, 66|PC, 96, 96, 96, 97, 76, 76, 76, 98,
|
|
83, 83, 83, 84, 2, 2, 2, 82, 61, 0,
|
|
2, 85, 86, 63|PC, 2},
|
|
{ 88, 88, 89, 89, 90, 90, 91, 91, 104, 104,
|
|
105, 105, 105, 106, 107, 107, 107, 108, 57|PC, 57|PC,
|
|
57|PC, 72|PC, 110, 110, 110, 111, 76, 76, 76, 112,
|
|
100, 100, 100, 101, 2, 2, 99, 2, 61, 0,
|
|
2, 85, 102, 69|PC, 2},
|
|
{ 119, 119, 120, 120, 121, 121, 122, 122, 81|PC, 81|PC,
|
|
84|PC, 90|PC, 84|PC, 87|PC, 93|PC, 99|PC, 93|PC, 96|PC,102|PC,107|PC,
|
|
102|PC,104|PC,110|PC,116|PC,110|PC,113|PC,119|PC,107|PC,119|PC,122|PC,
|
|
114, 114, 114, 115, 2, 2, 113, 2, 61, 0,
|
|
2, 75|PC, 2, 78|PC, 65},
|
|
{ 154, 154, 155, 155, 156, 156, 157, 157,128|PC,128|PC,
|
|
131|PC,137|PC,131|PC,134|PC,140|PC,143|PC,140|PC,134|PC,102|PC,149|PC,
|
|
102|PC,146|PC,152|PC,158|PC,152|PC,155|PC,119|PC,149|PC,119|PC,161|PC,
|
|
150, 150, 150, 151, 2, 2, 2, 149, 61, 0,
|
|
2, 75|PC, 2,125|PC, 2},
|
|
{ 154, 154, 155, 155, 156, 156, 157, 157, 158, 158,
|
|
167|PC,173|PC,167|PC,170|PC,140|PC,179|PC,140|PC,176|PC,102|PC,185|PC,
|
|
102|PC,182|PC,110|PC,191|PC,110|PC,188|PC,194|PC,185|PC,194|PC,196|PC,
|
|
150, 150, 150, 151, 2, 2, 178, 2, 61, 0,
|
|
2, 75|PC, 2,164|PC, 2},
|
|
{ 196, 196, 197, 197, 198, 198, 199, 199, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 2, 2, 5, 6, 2, 0,
|
|
8, 195, 52, 2, 2},
|
|
{ 66, 66, 67, 67, 68, 68, 69, 69, 70, 70,
|
|
71, 202, 71, 72, 203, 205, 203, 204,202|PC,202|PC,
|
|
202|PC,205|PC, 76, 76, 76, 81,211|PC,211|PC,211|PC,208|PC,
|
|
59, 59, 59, 60, 2, 2, 200, 2, 61, 0,
|
|
2, 62, 201,199|PC, 65},
|
|
{ 88, 88, 89, 89, 90, 90, 91, 91, 104, 104,
|
|
93, 93, 93, 94, 93, 93, 93, 94,214|PC,214|PC,
|
|
214|PC,217|PC, 76, 76, 76, 98,223|PC,223|PC,223|PC,220|PC,
|
|
83, 83, 83, 84, 2, 2, 2, 213, 61, 0,
|
|
2, 85, 214, 214, 2},
|
|
{ 88, 88, 89, 89, 223, 223, 91, 91, 104, 104,
|
|
224, 224, 224, 225, 107, 107, 107, 94, 226, 226,
|
|
226, 227, 228, 228, 228, 229, 76, 76, 76, 98,
|
|
83, 83, 83, 84, 2, 2, 2, 221, 61, 0,
|
|
2, 85, 222,226|PC, 2},
|
|
{ 88, 88, 89, 89, 90, 90, 91, 91, 104, 104,
|
|
232, 232, 232, 233, 107, 107, 107, 108,232|PC,232|PC,
|
|
232|PC,235|PC, 76, 76, 76, 112,241|PC,241|PC,241|PC,238|PC,
|
|
83, 83, 83, 84, 2, 2, 230, 2, 61, 0,
|
|
2, 85, 231,229|PC, 2},
|
|
{ 154, 154, 155, 155, 156, 156, 157, 157, 158, 158,
|
|
247|PC,137|PC,247|PC,250|PC,140|PC,253|PC,140|PC,134|PC,256|PC,262|PC,
|
|
256|PC,258|PC,152|PC,264|PC,152|PC,155|PC,267|PC,270|PC,267|PC,161|PC,
|
|
150, 150, 150, 151, 2, 2, 2,244|PC, 61, 0,
|
|
2, 75|PC, 2,125|PC, 2},
|
|
{ 154, 154, 155, 155, 156, 156, 157, 157,128|PC,128|PC,
|
|
167|PC,273|PC,167|PC,170|PC,276|PC,282|PC,276|PC,279|PC,102|PC,285|PC,
|
|
102|PC,182|PC,288|PC,294|PC,288|PC,291|PC,119|PC,297|PC,119|PC,196|PC,
|
|
150, 150, 150, 151, 2, 2, 254, 2, 61, 0,
|
|
2, 75|PC, 2,164|PC, 2},
|
|
{ 154, 154, 155, 155, 156, 156, 157, 157, 158, 158,
|
|
167|PC,173|PC,167|PC,170|PC,300|PC,179|PC,300|PC,303|PC,102|PC,306|PC,
|
|
102|PC,182|PC,288|PC,309|PC,288|PC,188|PC,119|PC,312|PC,119|PC,196|PC,
|
|
150, 150, 150, 151, 2, 2, 265, 2, 61, 0,
|
|
2, 75|PC, 2,164|PC, 2},
|
|
{ 88, 88, 89, 89, 223, 223, 91, 91, 104, 104,
|
|
275, 275, 275, 276, 107, 107, 107, 94, 277, 277,
|
|
277, 278, 279, 279, 279, 280,321|PC,321|PC,321|PC,318|PC,
|
|
83, 83, 83, 84, 2, 2, 2, 273, 61, 0,
|
|
2, 85, 274,315|PC, 2},
|
|
{ 287, 287, 288, 288, 289, 289, 56, 56, 0, 0,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 3, 2, 2, 5, 6, 2, 0,
|
|
50, 51,324|PC, 2, 2}};
|
|
USHORT aLanLlcCondJump[327] = {
|
|
0, 1, 7, 8, 1, 9, 10, 2, 12, 3, 16, 17,
|
|
4, 18, 19, 5, 20, 21, 22, 23, 6, 26, 27, 7,
|
|
28, 29, 3, 8, 30, 31, 8, 32, 33, 8, 34, 31,
|
|
8, 35, 36, 8, 37, 38, 8, 39, 40, 8, 41, 42,
|
|
8, 43, 44, 9, 45, 46, 10, 64, 63, 11, 75, 76,
|
|
11, 77, 78, 10, 87, 86, 11, 95, 78, 12, 102, 103,
|
|
11, 109, 78, 13, 2, 116, 9, 117, 118, 14, 123, 3,
|
|
15, 124, 125, 15, 126, 127, 16, 128, 129, 15, 130, 131,
|
|
15, 132, 133, 16, 134, 135, 17, 136, 15, 137, 138, 16,
|
|
139, 140, 15, 141, 142, 15, 143, 144, 16, 145, 140, 15,
|
|
146, 12, 15, 147, 148, 9, 152, 153, 14, 158, 3, 15,
|
|
159, 160, 15, 161, 162, 16, 163, 164, 15, 165, 166, 16,
|
|
167, 164, 15, 168, 169, 16, 170, 171, 15, 172, 173, 15,
|
|
174, 175, 16, 176, 171, 15, 177, 169, 9, 179, 153, 15,
|
|
180, 181, 15, 182, 183, 16, 128, 184, 15, 185, 186, 16,
|
|
187, 184, 15, 188, 189, 16, 190, 140, 15, 191, 192, 16,
|
|
193, 140, 17, 146, 15, 194, 189, 9, 201, 87, 11, 206,
|
|
207, 11, 208, 209, 11, 210, 211, 11, 212, 207, 11, 215,
|
|
76, 11, 216, 78, 11, 217, 218, 11, 219, 220, 10, 87,
|
|
222, 9, 231, 87, 11, 234, 76, 11, 235, 78, 11, 236,
|
|
237, 11, 238, 239, 18, 240, 241, 15, 242, 243, 15, 244,
|
|
245, 16, 246, 164, 17, 247, 19, 248, 169, 249, 20, 171,
|
|
16, 250, 251, 15, 252, 12, 16, 253, 171, 16, 128, 164,
|
|
15, 255, 256, 15, 257, 258, 16, 259, 164, 16, 260, 140,
|
|
15, 141, 261, 15, 191, 262, 16, 263, 140, 16, 264, 140,
|
|
15, 266, 267, 15, 268, 269, 16, 270, 140, 16, 271, 140,
|
|
16, 272, 140, 9, 274, 103, 11, 281, 282, 11, 283, 284,
|
|
9, 285, 286};
|
|
#endif
|
|
|
|
|
|
#define usState pLink->State
|
|
|
|
UINT
|
|
RunStateMachine(
|
|
IN OUT PDATA_LINK pLink,
|
|
IN USHORT usInput,
|
|
IN BOOLEAN boolPollFinal,
|
|
IN BOOLEAN boolResponse
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
The function impelements the complete HDLC ABM link station as
|
|
it has been defined in IBM Token-Ring Architecture Reference.
|
|
The excluding of XID and TEST handling in the link station level
|
|
should be the the only difference. The code is compiled from
|
|
the state machine definition file with the finite state machine
|
|
compiler.
|
|
|
|
Arguments:
|
|
|
|
pLink - link station context
|
|
|
|
usInput - state machine input
|
|
|
|
boolPollFinal - boolean flag set when the refeived frame had poll/final
|
|
bit set
|
|
|
|
boolResponse - boolean flag set when the refeived frame was response
|
|
|
|
Return Value:
|
|
|
|
STATUS_SUCCESS - the state machine acknowledged the next operation,
|
|
eg. the received data or teh packet was queued
|
|
|
|
DLC_STATUS_NO_ACTION - the command was accepted and executed.
|
|
No further action is required from caller.
|
|
|
|
DLC_LOGICAL_ERROR - the input is invalid within this state.
|
|
Thi error is returned to the upper levels.
|
|
|
|
DLC_IGNORE_FRAME - the received frame was ignored
|
|
|
|
DLC_DISCARD_INFO_FIELD - the received data was discarded
|
|
|
|
--*/
|
|
{
|
|
UINT usAction;
|
|
UINT usActionIndex;
|
|
UCHAR uchSendId = 0;
|
|
UINT usRetStatus = DLC_STATUS_SUCCESS;
|
|
|
|
// keep link stable
|
|
ACQUIRE_SPIN_LOCK( &pLink->SpinLock );
|
|
|
|
// Fsm condition switch
|
|
|
|
#ifdef FSM_PREDICATE_CASES
|
|
usAction = aLanLlcStateInput[usState][usInput];
|
|
if (usAction & 0x8000)
|
|
{
|
|
usActionIndex = usAction & 0x7fff;
|
|
usAction = aLanLlcCondJump[usActionIndex++];
|
|
switch (usAction) {
|
|
case 1:
|
|
if (pLink->Vi==0)
|
|
;
|
|
else if (pLink->Vi==REMOTE_INIT_PENDING)
|
|
usActionIndex += 1;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 2:
|
|
if (pLink->P_Ct==0)
|
|
;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 3:
|
|
if (pLink->Vi==LOCAL_INIT_PENDING||pLink->Vi==REMOTE_INIT_PENDING)
|
|
;
|
|
else if (pLink->Vi==OPER_MODE_PENDING)
|
|
usActionIndex += 1;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 4:
|
|
if (pLink->Vb==0)
|
|
;
|
|
else if (pLink->Vb==STATE_LOCAL_BUSY)
|
|
usActionIndex += 1;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 5:
|
|
if (pLink->P_Ct!=0||pLink->Vi==LOCAL_INIT_PENDING)
|
|
;
|
|
else if (pLink->P_Ct==0||pLink->Vi==LOCAL_INIT_PENDING)
|
|
usActionIndex += 1;
|
|
else if (pLink->Vi==REMOTE_INIT_PENDING|LOCAL_INIT_PENDING&&pLink->Vb==0)
|
|
usActionIndex += 2;
|
|
else if (pLink->Vi==REMOTE_INIT_PENDING|LOCAL_INIT_PENDING&&pLink->Vb==STATE_LOCAL_BUSY)
|
|
usActionIndex += 3;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 6:
|
|
if (pLink->Vi==LOCAL_INIT_PENDING||pLink->Vi==REMOTE_INIT_PENDING|LOCAL_INIT_PENDING)
|
|
;
|
|
else if (pLink->Vi==OPER_MODE_PENDING)
|
|
usActionIndex += 1;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 7:
|
|
if ((pLink->Vi==LOCAL_INIT_PENDING||pLink->Vi==REMOTE_INIT_PENDING|LOCAL_INIT_PENDING)&&pLink->Vb==0)
|
|
;
|
|
else if ((pLink->Vi==LOCAL_INIT_PENDING||pLink->Vi==REMOTE_INIT_PENDING|LOCAL_INIT_PENDING)&&pLink->Vb==STATE_LOCAL_BUSY)
|
|
usActionIndex += 1;
|
|
else if ((pLink->Vi==OPER_MODE_PENDING))
|
|
usActionIndex += 2;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 8:
|
|
if (pLink->Vi==OPER_MODE_PENDING&&pLink->Nr==0&&pLink->Vb==0)
|
|
;
|
|
else if (pLink->Vi==OPER_MODE_PENDING&&pLink->Nr==0&&pLink->Vb==STATE_LOCAL_BUSY)
|
|
usActionIndex += 1;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 9:
|
|
if (pLink->P_Ct!=0)
|
|
;
|
|
else if (pLink->P_Ct==0)
|
|
usActionIndex += 1;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 10:
|
|
if (pLink->Is_Ct<=0)
|
|
;
|
|
else if (pLink->Is_Ct>0)
|
|
usActionIndex += 1;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 11:
|
|
if (pLink->Nr!=pLink->Vs)
|
|
;
|
|
else if (pLink->Nr==pLink->Vs)
|
|
usActionIndex += 1;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 12:
|
|
if (pLink->Is_Ct>0)
|
|
;
|
|
else if (pLink->P_Ct<=0)
|
|
usActionIndex += 1;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 13:
|
|
if (pLink->Vc!=0)
|
|
;
|
|
else if (pLink->Vc==0)
|
|
usActionIndex += 1;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 14:
|
|
if (pLink->Vi!=IS_FRAME_PENDING)
|
|
;
|
|
else if (pLink->Vi==IS_FRAME_PENDING)
|
|
usActionIndex += 1;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 15:
|
|
if (pLink->Va!=pLink->Nr)
|
|
;
|
|
else if (pLink->Va==pLink->Nr)
|
|
usActionIndex += 1;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 16:
|
|
if (pLink->Vc==0)
|
|
;
|
|
else if (pLink->Vc==STACKED_DISCp_CMD)
|
|
usActionIndex += 1;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 17:
|
|
if (pLink->Va!=pLink->Nr)
|
|
;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 18:
|
|
if (pLink->Vb==STATE_LOCAL_BUSY|STATE_REMOTE_BUSY)
|
|
;
|
|
else if (pLink->Vb==STATE_LOCAL_BUSY)
|
|
usActionIndex += 1;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 19:
|
|
if (pLink->Va!=pLink->Nr)
|
|
;
|
|
else if (pLink->Va==pLink->Nr)
|
|
usActionIndex += 1;
|
|
else if (pLink->Vc==0)
|
|
usActionIndex += 2;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
case 20:
|
|
if (pLink->Vc==STACKED_DISCp_CMD)
|
|
;
|
|
else
|
|
usActionIndex = 0;
|
|
break;
|
|
};
|
|
usAction = aLanLlcCondJump[usActionIndex];
|
|
}
|
|
#endif
|
|
|
|
|
|
#ifdef FSM_ACTION_CASES
|
|
switch (usAction) {
|
|
case 0:
|
|
usRetStatus=DLC_STATUS_NO_ACTION;
|
|
break;
|
|
case 1:
|
|
EnableLinkStation(pLink);
|
|
pLink->Vi=pLink->Vb=pLink->Vc=0;
|
|
label_1_1:
|
|
pLink->State=1;
|
|
case 11:
|
|
label_11_1:
|
|
TimerStart(&pLink->Ti);
|
|
break;
|
|
case 2:
|
|
usRetStatus=DLC_STATUS_LINK_PROTOCOL_ERROR;
|
|
break;
|
|
case 3:
|
|
usRetStatus=DLC_STATUS_IGNORE_FRAME;
|
|
break;
|
|
case 4:
|
|
DisableLinkStation(pLink);
|
|
pLink->State=0;
|
|
break;
|
|
case 5:
|
|
label_5_1:
|
|
pLink->Vb=STATE_LOCAL_BUSY;
|
|
break;
|
|
case 6:
|
|
label_6_1:
|
|
pLink->Vb=0;
|
|
break;
|
|
case 7:
|
|
TimerStartIf(&pLink->T1);
|
|
pLink->Vi=LOCAL_INIT_PENDING;
|
|
DLC_SABME(1);
|
|
pLink->State=2;
|
|
TimerStop(&pLink->Ti);
|
|
label_7_1:
|
|
pLink->P_Ct=pLink->N2;
|
|
label_7_2:
|
|
pLink->Is_Ct=pLink->N2;
|
|
break;
|
|
case 8:
|
|
pLink->Vi=OPER_MODE_PENDING;
|
|
DLC_UA(pLink->Pf);
|
|
pLink->State=2;
|
|
pLink->Va=pLink->Vs=pLink->Vr=pLink->Vp=0;
|
|
pLink->Ir_Ct=pLink->N3;
|
|
TimerStart(&pLink->Ti);
|
|
goto label_7_2;
|
|
case 9:
|
|
DLC_DM(0);
|
|
label_9_1:
|
|
EVENT_INDICATION(CONFIRM_DISCONNECT);
|
|
label_9_2:
|
|
TimerStart(&pLink->Ti);
|
|
break;
|
|
case 10:
|
|
DLC_DM(pLink->Pf);
|
|
pLink->Vi=0;
|
|
goto label_9_1;
|
|
case 12:
|
|
label_12_1:
|
|
;
|
|
break;
|
|
case 13:
|
|
label_13_1:
|
|
DLC_DM(boolPollFinal);
|
|
break;
|
|
case 14:
|
|
EVENT_INDICATION(INDICATE_CONNECT_REQUEST);
|
|
label_14_1:
|
|
pLink->Pf=boolPollFinal;
|
|
pLink->Vi=REMOTE_INIT_PENDING;
|
|
goto label_9_2;
|
|
case 15:
|
|
DLC_DM(1);
|
|
break;
|
|
case 16:
|
|
DLC_DM(0);
|
|
EVENT_INDICATION(CONFIRM_CONNECT_FAILED);
|
|
EVENT_INDICATION(CONFIRM_DISCONNECT);
|
|
TimerStop(&pLink->T1);
|
|
label_16_1:
|
|
pLink->Vi=0;
|
|
goto label_1_1;
|
|
case 17:
|
|
TimerStop(&pLink->Ti);
|
|
pLink->Vi=0;
|
|
pLink->State=3;
|
|
DLC_DISC(1);
|
|
label_17_1:
|
|
pLink->P_Ct=pLink->N2;
|
|
label_17_2:
|
|
TimerStart(&pLink->T1);
|
|
break;
|
|
case 18:
|
|
pLink->Vi=IS_FRAME_PENDING;
|
|
EVENT_INDICATION(INDICATE_TI_TIMER_EXPIRED);
|
|
label_18_1:
|
|
pLink->State=8;
|
|
DLC_RR_COMMAND(1);
|
|
label_18_2:
|
|
EVENT_INDICATION(CONFIRM_CONNECT);
|
|
goto label_17_1;
|
|
case 19:
|
|
EVENT_INDICATION(INDICATE_TI_TIMER_EXPIRED);
|
|
label_19_1:
|
|
pLink->Vi=IS_FRAME_PENDING;
|
|
DLC_RNR_COMMAND(1);
|
|
pLink->State=9;
|
|
goto label_18_2;
|
|
case 20:
|
|
DLC_SABME(1);
|
|
label_20_1:
|
|
pLink->P_Ct--;
|
|
goto label_17_2;
|
|
case 21:
|
|
EVENT_INDICATION(CONFIRM_CONNECT_FAILED);
|
|
EVENT_INDICATION(INDICATE_LINK_LOST);
|
|
goto label_16_1;
|
|
case 22:
|
|
pLink->Va=pLink->Vs=pLink->Vr=pLink->Vp=0,pLink->Vi=IS_FRAME_PENDING,pLink->Vc=0;
|
|
pLink->Ir_Ct=pLink->N3;
|
|
pLink->Is_Ct=pLink->N2;
|
|
goto label_18_1;
|
|
case 23:
|
|
pLink->Va=pLink->Vs=pLink->Vr=pLink->Vp=0;
|
|
pLink->Vc=0;
|
|
pLink->Ir_Ct=pLink->N3;
|
|
pLink->Is_Ct=pLink->N2;
|
|
goto label_19_1;
|
|
case 24:
|
|
EVENT_INDICATION(CONFIRM_CONNECT_FAILED);
|
|
EVENT_INDICATION(INDICATE_DM_DISC_RECEIVED);
|
|
pLink->State=1;
|
|
pLink->Vi=0;
|
|
TimerStart(&pLink->Ti);
|
|
label_24_1:
|
|
TimerStop(&pLink->T1);
|
|
goto label_13_1;
|
|
case 25:
|
|
EVENT_INDICATION(CONFIRM_CONNECT_FAILED);
|
|
EVENT_INDICATION(INDICATE_DM_DISC_RECEIVED);
|
|
pLink->State=1;
|
|
TimerStop(&pLink->T1);
|
|
label_25_1:
|
|
pLink->Vi=0;
|
|
goto label_9_2;
|
|
case 26:
|
|
pLink->Vi=REMOTE_INIT_PENDING|LOCAL_INIT_PENDING;
|
|
case 47:
|
|
label_47_1:
|
|
DLC_UA(boolPollFinal);
|
|
break;
|
|
case 27:
|
|
label_27_1:
|
|
TimerStart(&pLink->Ti);
|
|
goto label_47_1;
|
|
case 28:
|
|
pLink->Va=pLink->Vs=pLink->Vr=pLink->Vp=0;
|
|
pLink->Vi=IS_FRAME_PENDING;
|
|
pLink->State=8;
|
|
DLC_RR_COMMAND(1);
|
|
label_28_1:
|
|
EVENT_INDICATION(CONFIRM_CONNECT);
|
|
pLink->Vc=0;
|
|
TimerStart(&pLink->T1);
|
|
pLink->Ir_Ct=pLink->N3;
|
|
goto label_7_1;
|
|
case 29:
|
|
pLink->Va=pLink->Vs=pLink->Vr=pLink->Vp=0;
|
|
pLink->Vi=IS_FRAME_PENDING;
|
|
DLC_RNR_COMMAND(1);
|
|
pLink->State=9;
|
|
goto label_28_1;
|
|
case 30:
|
|
SEND_ACK(pLink);
|
|
label_30_1:
|
|
usRetStatus=STATUS_SUCCESS;pLink->Vr+=2;
|
|
case 41:
|
|
label_41_1:
|
|
pLink->State=5;
|
|
label_30_3:
|
|
StartSendProcessAndLock(pLink);
|
|
label_30_4:
|
|
EVENT_INDICATION(CONFIRM_CONNECT);
|
|
goto label_25_1;
|
|
case 31:
|
|
DLC_RNR_RESPONSE(0);
|
|
label_31_1:
|
|
pLink->State=6;
|
|
label_31_2:
|
|
usRetStatus=DLC_STATUS_DISCARD_INFO_FIELD;
|
|
goto label_30_3;
|
|
case 32:
|
|
DLC_RR_RESPONSE(1);
|
|
goto label_30_1;
|
|
case 33:
|
|
DLC_RNR_RESPONSE(1);
|
|
goto label_31_1;
|
|
case 34:
|
|
DLC_REJ_RESPONSE(0);
|
|
label_34_1:
|
|
pLink->State=7;
|
|
goto label_31_2;
|
|
case 35:
|
|
DLC_REJ_RESPONSE(1);
|
|
goto label_34_1;
|
|
case 36:
|
|
pLink->State=6;
|
|
EVENT_INDICATION(CONFIRM_CONNECT);
|
|
pLink->Vi=0;
|
|
StartSendProcessAndLock(pLink);
|
|
TimerStart(&pLink->Ti);
|
|
usRetStatus=DLC_STATUS_DISCARD_INFO_FIELD;
|
|
goto label_12_1;
|
|
case 37:
|
|
label_37_1:
|
|
pLink->State=12;
|
|
EVENT_INDICATION(INDICATE_REMOTE_BUSY);
|
|
pLink->Vb=STATE_REMOTE_BUSY;
|
|
label_37_2:
|
|
pLink->Is_Ct=pLink->N2;
|
|
goto label_30_4;
|
|
case 38:
|
|
label_38_1:
|
|
pLink->State=13;
|
|
pLink->Vb=STATE_LOCAL_BUSY|STATE_REMOTE_BUSY;
|
|
goto label_37_2;
|
|
case 39:
|
|
DLC_RR_RESPONSE(1);
|
|
goto label_37_1;
|
|
case 40:
|
|
DLC_RNR_RESPONSE(1);
|
|
goto label_38_1;
|
|
case 42:
|
|
label_42_1:
|
|
pLink->State=6;
|
|
goto label_30_3;
|
|
case 43:
|
|
DLC_RR_RESPONSE(1);
|
|
goto label_41_1;
|
|
case 44:
|
|
DLC_RNR_RESPONSE(1);
|
|
goto label_42_1;
|
|
case 45:
|
|
DLC_DISC(1);
|
|
goto label_20_1;
|
|
case 46:
|
|
label_46_1:
|
|
EVENT_INDICATION(CONFIRM_DISCONNECT);
|
|
goto label_1_1;
|
|
case 48:
|
|
TimerStop(&pLink->T1);
|
|
goto label_46_1;
|
|
case 49:
|
|
EVENT_INDICATION(CONFIRM_DISCONNECT);
|
|
pLink->State=1;
|
|
TimerStart(&pLink->Ti);
|
|
goto label_24_1;
|
|
case 50:
|
|
pLink->Vi=LOCAL_INIT_PENDING;
|
|
DLC_SABME(1);
|
|
pLink->State=2;
|
|
label_50_1:
|
|
TimerStop(&pLink->Ti);
|
|
goto label_17_1;
|
|
case 51:
|
|
pLink->State=3;
|
|
DLC_DISC(1);
|
|
goto label_50_1;
|
|
case 52:
|
|
EVENT_INDICATION(INDICATE_TI_TIMER_EXPIRED);
|
|
goto label_11_1;
|
|
case 53:
|
|
label_53_1:
|
|
EVENT_INDICATION(INDICATE_DM_DISC_RECEIVED);
|
|
label_53_2:
|
|
pLink->State=1;
|
|
goto label_27_1;
|
|
case 54:
|
|
label_54_1:
|
|
EVENT_INDICATION(INDICATE_DM_DISC_RECEIVED);
|
|
label_54_2:
|
|
pLink->State=1;
|
|
goto label_9_2;
|
|
case 55:
|
|
pLink->P_Ct=pLink->N2;
|
|
label_55_1:
|
|
pLink->State=20;
|
|
EVENT_INDICATION(INDICATE_FRMR_RECEIVED);
|
|
goto label_9_2;
|
|
case 56:
|
|
label_56_1:
|
|
pLink->State=11;
|
|
EVENT_INDICATION(INDICATE_RESET);
|
|
goto label_14_1;
|
|
case 57:
|
|
DLC_FRMR(boolPollFinal);
|
|
label_57_1:
|
|
EVENT_INDICATION(INDICATE_FRMR_SENT);
|
|
goto label_9_2;
|
|
case 58:
|
|
pLink->State=6;
|
|
DLC_RNR_RESPONSE(0);
|
|
pLink->Ir_Ct=pLink->N3;
|
|
TimerStop(&pLink->T2);
|
|
goto label_5_1;
|
|
case 59:
|
|
DLC_FRMR(0);
|
|
label_59_1:
|
|
pLink->DlcStatus.FrmrData.Reason=0x01;
|
|
label_59_2:
|
|
TimerStop(&pLink->T2);
|
|
label_59_3:
|
|
pLink->State=4;
|
|
TimerStop(&pLink->T1);
|
|
goto label_57_1;
|
|
case 60:
|
|
DLC_FRMR(1);
|
|
goto label_59_1;
|
|
case 61:
|
|
usRetStatus=STATUS_SUCCESS;
|
|
break;
|
|
case 62:
|
|
TimerStop(&pLink->Ti);
|
|
TimerStart(&pLink->T1);
|
|
label_62_1:
|
|
pLink->State=3;
|
|
DLC_DISC(1);
|
|
label_62_2:
|
|
TimerStop(&pLink->T2);
|
|
label_62_3:
|
|
pLink->P_Ct=pLink->N2;
|
|
break;
|
|
case 63:
|
|
pLink->State=8;
|
|
StopSendProcessAndLock(pLink);
|
|
pLink->Vp=pLink->Vs;
|
|
DLC_RR_COMMAND(1);
|
|
TimerStart(&pLink->T1);
|
|
pLink->Ir_Ct=pLink->N3;
|
|
goto label_62_2;
|
|
case 64:
|
|
EVENT_INDICATION(INDICATE_LINK_LOST);
|
|
TimerStart(&pLink->T1);
|
|
goto label_62_1;
|
|
case 65:
|
|
DLC_RR_RESPONSE(0);
|
|
label_65_1:
|
|
pLink->Ir_Ct=pLink->N3;
|
|
break;
|
|
case 66:
|
|
TimerStop(&pLink->T2);
|
|
case 88:
|
|
label_88_1:
|
|
TimerStop(&pLink->T1);
|
|
goto label_53_1;
|
|
case 67:
|
|
TimerStop(&pLink->T2);
|
|
case 89:
|
|
label_89_1:
|
|
TimerStop(&pLink->T1);
|
|
goto label_54_1;
|
|
case 68:
|
|
pLink->State=20;
|
|
EVENT_INDICATION(INDICATE_FRMR_RECEIVED);
|
|
TimerStop(&pLink->T1);
|
|
TimerStart(&pLink->Ti);
|
|
goto label_62_2;
|
|
case 69:
|
|
TimerStop(&pLink->T2);
|
|
case 91:
|
|
label_91_1:
|
|
TimerStop(&pLink->T1);
|
|
goto label_56_1;
|
|
case 70:
|
|
DLC_FRMR(0);
|
|
goto label_59_2;
|
|
case 71:
|
|
label_71_1:
|
|
SEND_ACK(pLink);
|
|
label_71_2:
|
|
usRetStatus=STATUS_SUCCESS;pLink->Vr+=2;
|
|
case 76:
|
|
label_76_1:
|
|
UpdateVa(pLink);
|
|
break;
|
|
case 72:
|
|
pLink->Ir_Ct=pLink->N3;
|
|
TimerStop(&pLink->T2);
|
|
label_72_1:
|
|
DLC_RR_RESPONSE(1);
|
|
goto label_71_2;
|
|
case 73:
|
|
DLC_REJ_RESPONSE(0);
|
|
label_73_1:
|
|
pLink->State=7;
|
|
pLink->Ir_Ct=pLink->N3;
|
|
usRetStatus=DLC_STATUS_DISCARD_INFO_FIELD;
|
|
label_73_2:
|
|
TimerStop(&pLink->T2);
|
|
goto label_76_1;
|
|
case 74:
|
|
DLC_REJ_RESPONSE(1);
|
|
goto label_73_1;
|
|
case 75:
|
|
label_75_1:
|
|
pLink->Is_Ct--;
|
|
case 226:
|
|
label_226_1:
|
|
ResendPackets(pLink),UpdateVa(pLink);
|
|
break;
|
|
case 77:
|
|
pLink->Ir_Ct=pLink->N3;
|
|
TimerStop(&pLink->T2);
|
|
case 109:
|
|
label_109_1:
|
|
DLC_RR_RESPONSE(1);
|
|
goto label_75_1;
|
|
case 78:
|
|
label_78_1:
|
|
DLC_RR_RESPONSE(1);
|
|
goto label_73_2;
|
|
case 79:
|
|
pLink->Vb=STATE_REMOTE_BUSY,pLink->Is_Ct=pLink->N2;
|
|
label_79_1:
|
|
pLink->State=12;
|
|
EVENT_INDICATION(INDICATE_REMOTE_BUSY);
|
|
label_79_2:
|
|
StopSendProcessAndLock(pLink);
|
|
goto label_76_1;
|
|
case 80:
|
|
pLink->Vb=STATE_REMOTE_BUSY;
|
|
pLink->Ir_Ct=pLink->N3;
|
|
DLC_RR_RESPONSE(1);
|
|
pLink->Is_Ct=pLink->N2;
|
|
TimerStop(&pLink->T2);
|
|
goto label_79_1;
|
|
case 81:
|
|
pLink->Ir_Ct=pLink->N3;
|
|
goto label_78_1;
|
|
case 82:
|
|
pLink->State=8;
|
|
pLink->Vb=0;
|
|
StopSendProcessAndLock(pLink);
|
|
label_82_1:
|
|
TimerStop(&pLink->Ti);
|
|
pLink->Vp=pLink->Vs;
|
|
DLC_RR_COMMAND(1);
|
|
label_82_2:
|
|
TimerStart(&pLink->T1);
|
|
goto label_62_3;
|
|
case 83:
|
|
DLC_FRMR(0);
|
|
label_83_1:
|
|
pLink->DlcStatus.FrmrData.Reason=0x01;
|
|
goto label_59_3;
|
|
case 84:
|
|
DLC_FRMR(1);
|
|
goto label_83_1;
|
|
case 85:
|
|
label_85_1:
|
|
TimerStop(&pLink->Ti);
|
|
label_85_2:
|
|
pLink->State=3;
|
|
DLC_DISC(1);
|
|
goto label_82_2;
|
|
case 86:
|
|
pLink->State=9;
|
|
label_86_1:
|
|
DLC_RNR_COMMAND(1);
|
|
label_86_2:
|
|
StopSendProcessAndLock(pLink);
|
|
label_86_3:
|
|
pLink->Vp=pLink->Vs;
|
|
label_86_4:
|
|
TimerStart(&pLink->T1);
|
|
goto label_62_3;
|
|
case 87:
|
|
TimerStop(&pLink->T2);
|
|
case 103:
|
|
label_103_1:
|
|
pLink->State=3;
|
|
DLC_DISC(1);
|
|
goto label_86_4;
|
|
case 90:
|
|
label_90_1:
|
|
TimerStart(&pLink->Ti);
|
|
label_90_2:
|
|
TimerStop(&pLink->T1);
|
|
label_90_3:
|
|
pLink->State=20;
|
|
EVENT_INDICATION(INDICATE_FRMR_RECEIVED);
|
|
goto label_62_3;
|
|
case 92:
|
|
pLink->DlcStatus.FrmrData.Reason=0x08;
|
|
case 104:
|
|
label_104_1:
|
|
DLC_FRMR(0);
|
|
goto label_59_3;
|
|
case 93:
|
|
DLC_RNR_RESPONSE(0);
|
|
case 107:
|
|
label_107_1:
|
|
usRetStatus=DLC_STATUS_DISCARD_INFO_FIELD;
|
|
goto label_76_1;
|
|
case 94:
|
|
DLC_RNR_RESPONSE(1);
|
|
goto label_107_1;
|
|
case 95:
|
|
DLC_RNR_RESPONSE(1);
|
|
goto label_75_1;
|
|
case 96:
|
|
label_96_1:
|
|
pLink->State=13;
|
|
label_96_2:
|
|
pLink->Vb=STATE_LOCAL_BUSY|STATE_REMOTE_BUSY;
|
|
label_96_3:
|
|
pLink->Is_Ct=pLink->N2;
|
|
goto label_79_2;
|
|
case 97:
|
|
DLC_RNR_RESPONSE(1);
|
|
goto label_96_1;
|
|
case 98:
|
|
DLC_RNR_RESPONSE(1);
|
|
goto label_76_1;
|
|
case 99:
|
|
pLink->State=14;
|
|
DLC_RNR_RESPONSE(0);
|
|
goto label_5_1;
|
|
case 100:
|
|
pLink->DlcStatus.FrmrData.Reason=00001;
|
|
goto label_104_1;
|
|
case 101:
|
|
pLink->DlcStatus.FrmrData.Reason=00001;
|
|
DLC_FRMR(1);
|
|
goto label_59_3;
|
|
case 102:
|
|
label_102_1:
|
|
pLink->State=10;
|
|
DLC_RR_COMMAND(1);
|
|
goto label_86_2;
|
|
case 105:
|
|
pLink->State=5;
|
|
goto label_71_1;
|
|
case 106:
|
|
pLink->State=5;
|
|
goto label_72_1;
|
|
case 108:
|
|
DLC_RR_RESPONSE(1);
|
|
goto label_107_1;
|
|
case 110:
|
|
label_110_1:
|
|
pLink->State=15;
|
|
EVENT_INDICATION(INDICATE_REMOTE_BUSY);
|
|
pLink->Vb=STATE_REMOTE_BUSY;
|
|
goto label_96_3;
|
|
case 111:
|
|
DLC_RR_RESPONSE(1);
|
|
goto label_110_1;
|
|
case 112:
|
|
DLC_RR_RESPONSE(1);
|
|
goto label_76_1;
|
|
case 113:
|
|
pLink->State=9;
|
|
pLink->Vb=STATE_LOCAL_BUSY;
|
|
label_113_1:
|
|
DLC_RNR_RESPONSE(0);
|
|
label_113_2:
|
|
TimerStop(&pLink->T2);
|
|
goto label_65_1;
|
|
case 114:
|
|
DLC_FRMR(0);
|
|
label_114_1:
|
|
pLink->DlcStatus.FrmrData.Reason=0x01;
|
|
label_114_2:
|
|
pLink->State=4;
|
|
EVENT_INDICATION(INDICATE_FRMR_SENT);
|
|
label_114_3:
|
|
TimerStop(&pLink->T1);
|
|
label_114_4:
|
|
TimerStop(&pLink->T2);
|
|
goto label_11_1;
|
|
case 115:
|
|
DLC_FRMR(1);
|
|
goto label_114_1;
|
|
case 116:
|
|
pLink->Vc=STACKED_DISCp_CMD;
|
|
break;
|
|
case 117:
|
|
pLink->P_Ct--;
|
|
StopSendProcessAndLock(pLink);
|
|
label_117_1:
|
|
pLink->Vp=pLink->Vs;
|
|
DLC_RR_COMMAND(1);
|
|
TimerStart(&pLink->T1);
|
|
goto label_113_2;
|
|
case 118:
|
|
EVENT_INDICATION(INDICATE_LINK_LOST);
|
|
label_118_1:
|
|
pLink->State=1;
|
|
goto label_114_4;
|
|
case 119:
|
|
TimerStop(&pLink->T2);
|
|
case 154:
|
|
label_154_1:
|
|
EVENT_INDICATION(INDICATE_DM_DISC_RECEIVED);
|
|
pLink->State=1;
|
|
TimerStart(&pLink->Ti);
|
|
TimerStop(&pLink->T1);
|
|
goto label_47_1;
|
|
case 120:
|
|
EVENT_INDICATION(INDICATE_DM_DISC_RECEIVED);
|
|
TimerStop(&pLink->T1);
|
|
goto label_118_1;
|
|
case 121:
|
|
pLink->Vc=0;
|
|
TimerStop(&pLink->T2);
|
|
goto label_90_1;
|
|
case 122:
|
|
pLink->State=11;
|
|
EVENT_INDICATION(INDICATE_RESET);
|
|
pLink->Vi=REMOTE_INIT_PENDING;
|
|
pLink->Pf=boolPollFinal;
|
|
goto label_114_3;
|
|
case 123:
|
|
DLC_FRMR(0);
|
|
pLink->Vc=0;
|
|
goto label_114_2;
|
|
case 124:
|
|
SEND_ACK(pLink);
|
|
usRetStatus=STATUS_SUCCESS;pLink->Vr+=2;
|
|
case 146:
|
|
label_146_1:
|
|
AdjustWw(pLink);
|
|
goto label_7_2;
|
|
case 125:
|
|
label_125_1:
|
|
SEND_ACK(pLink);
|
|
label_125_2:
|
|
usRetStatus=STATUS_SUCCESS;pLink->Vr+=2;
|
|
break;
|
|
case 126:
|
|
AdjustWw(pLink);
|
|
pLink->Is_Ct=pLink->N2;
|
|
case 127:
|
|
label_127_1:
|
|
pLink->Ir_Ct=pLink->N3;
|
|
TimerStop(&pLink->T2);
|
|
label_126_2:
|
|
DLC_RR_RESPONSE(1);
|
|
goto label_125_2;
|
|
case 128:
|
|
pLink->State=5;
|
|
StartSendProcessAndLock(pLink);
|
|
UpdateVaChkpt(pLink);
|
|
goto label_125_1;
|
|
case 129:
|
|
pLink->Vc=0;
|
|
UpdateVaChkpt(pLink);
|
|
usRetStatus=DLC_STATUS_DISCARD_INFO_FIELD;
|
|
TimerStop(&pLink->T2);
|
|
goto label_85_1;
|
|
case 130:
|
|
DLC_REJ_RESPONSE(0);
|
|
pLink->State=10;
|
|
AdjustWw(pLink);
|
|
pLink->Is_Ct=pLink->N2;
|
|
label_130_1:
|
|
usRetStatus=DLC_STATUS_DISCARD_INFO_FIELD;
|
|
goto label_113_2;
|
|
case 131:
|
|
DLC_REJ_RESPONSE(0);
|
|
label_131_1:
|
|
pLink->State=10;
|
|
goto label_130_1;
|
|
case 132:
|
|
DLC_REJ_RESPONSE(1);
|
|
AdjustWw(pLink);
|
|
pLink->Is_Ct=pLink->N2;
|
|
goto label_131_1;
|
|
case 133:
|
|
DLC_REJ_RESPONSE(1);
|
|
goto label_131_1;
|
|
case 134:
|
|
DLC_REJ_RESPONSE(0);
|
|
pLink->State=7;
|
|
StartSendProcessAndLock(pLink);
|
|
UpdateVaChkpt(pLink);
|
|
goto label_130_1;
|
|
case 135:
|
|
pLink->Vc=0;
|
|
UpdateVaChkpt(pLink);
|
|
usRetStatus=DLC_STATUS_DISCARD_INFO_FIELD;
|
|
TimerStop(&pLink->T2);
|
|
goto label_85_2;
|
|
case 136:
|
|
label_136_1:
|
|
ResendPackets(pLink);
|
|
goto label_7_2;
|
|
case 137:
|
|
ResendPackets(pLink);
|
|
DLC_RR_RESPONSE(1);
|
|
pLink->Is_Ct=pLink->N2;
|
|
goto label_113_2;
|
|
case 138:
|
|
label_138_1:
|
|
TimerStop(&pLink->T2);
|
|
case 189:
|
|
label_189_1:
|
|
DLC_RR_RESPONSE(1);
|
|
break;
|
|
case 139:
|
|
pLink->State=5;
|
|
label_139_1:
|
|
StartSendProcessAndLock(pLink);
|
|
label_139_2:
|
|
UpdateVaChkpt(pLink);
|
|
break;
|
|
case 140:
|
|
label_140_1:
|
|
pLink->Vc=0;
|
|
pLink->State=3;
|
|
TimerStart(&pLink->T1);
|
|
DLC_DISC(1);
|
|
pLink->P_Ct=pLink->N2;
|
|
goto label_139_2;
|
|
case 141:
|
|
pLink->Vb=STATE_REMOTE_BUSY;
|
|
goto label_146_1;
|
|
case 142:
|
|
pLink->Vb=STATE_REMOTE_BUSY;
|
|
goto label_7_2;
|
|
case 143:
|
|
AdjustWw(pLink);
|
|
case 144:
|
|
label_144_1:
|
|
pLink->Vb=STATE_REMOTE_BUSY;
|
|
label_143_2:
|
|
pLink->Is_Ct=pLink->N2;
|
|
case 148:
|
|
label_148_1:
|
|
pLink->Ir_Ct=pLink->N3;
|
|
goto label_138_1;
|
|
case 145:
|
|
pLink->State=12;
|
|
label_145_1:
|
|
EVENT_INDICATION(INDICATE_REMOTE_BUSY);
|
|
label_145_2:
|
|
pLink->Is_Ct=pLink->N2;
|
|
goto label_139_2;
|
|
case 147:
|
|
AdjustWw(pLink);
|
|
goto label_143_2;
|
|
case 149:
|
|
pLink->State=17;
|
|
label_149_1:
|
|
DLC_RR_RESPONSE(0);
|
|
goto label_6_1;
|
|
case 150:
|
|
DLC_FRMR(0);
|
|
label_150_1:
|
|
pLink->DlcStatus.FrmrData.Reason=0x01;
|
|
label_150_2:
|
|
pLink->State=4;
|
|
EVENT_INDICATION(INDICATE_FRMR_SENT);
|
|
label_150_3:
|
|
TimerStop(&pLink->T1);
|
|
goto label_11_1;
|
|
case 151:
|
|
DLC_FRMR(1);
|
|
goto label_150_1;
|
|
case 152:
|
|
DLC_RNR_COMMAND(1);
|
|
label_152_1:
|
|
StopSendProcessAndLock(pLink);
|
|
pLink->Vp=pLink->Vs;
|
|
goto label_20_1;
|
|
case 153:
|
|
EVENT_INDICATION(INDICATE_LINK_LOST);
|
|
goto label_1_1;
|
|
case 155:
|
|
EVENT_INDICATION(INDICATE_DM_DISC_RECEIVED);
|
|
pLink->State=1;
|
|
goto label_150_3;
|
|
case 156:
|
|
TimerStart(&pLink->Ti);
|
|
goto label_90_2;
|
|
case 157:
|
|
pLink->State=11;
|
|
EVENT_INDICATION(INDICATE_RESET);
|
|
pLink->Vi=REMOTE_INIT_PENDING;
|
|
pLink->Pf=boolPollFinal;
|
|
goto label_150_3;
|
|
case 158:
|
|
DLC_FRMR(0);
|
|
goto label_150_2;
|
|
case 159:
|
|
DLC_RNR_RESPONSE(0);
|
|
usRetStatus=DLC_STATUS_DISCARD_INFO_FIELD;
|
|
goto label_146_1;
|
|
case 160:
|
|
label_160_1:
|
|
DLC_RNR_RESPONSE(0);
|
|
case 166:
|
|
label_166_1:
|
|
usRetStatus=DLC_STATUS_DISCARD_INFO_FIELD;
|
|
break;
|
|
case 161:
|
|
AdjustWw(pLink);
|
|
pLink->Is_Ct=pLink->N2;
|
|
case 162:
|
|
label_162_1:
|
|
DLC_RNR_RESPONSE(1);
|
|
goto label_166_1;
|
|
case 163:
|
|
pLink->State=6;
|
|
StartSendProcessAndLock(pLink);
|
|
UpdateVaChkpt(pLink);
|
|
goto label_160_1;
|
|
case 164:
|
|
TimerStop(&pLink->Ti);
|
|
case 184:
|
|
label_184_1:
|
|
pLink->Vc=0;
|
|
pLink->State=3;
|
|
TimerStart(&pLink->T1);
|
|
DLC_DISC(1);
|
|
pLink->P_Ct=pLink->N2;
|
|
label_164_2:
|
|
UpdateVaChkpt(pLink);
|
|
goto label_166_1;
|
|
case 165:
|
|
label_165_1:
|
|
AdjustWw(pLink);
|
|
pLink->Is_Ct=pLink->N2;
|
|
goto label_166_1;
|
|
case 167:
|
|
pLink->State=6;
|
|
label_167_1:
|
|
StartSendProcessAndLock(pLink);
|
|
goto label_164_2;
|
|
case 168:
|
|
DLC_RNR_RESPONSE(1);
|
|
goto label_136_1;
|
|
case 169:
|
|
label_169_1:
|
|
DLC_RNR_RESPONSE(1);
|
|
break;
|
|
case 170:
|
|
pLink->State=6;
|
|
goto label_139_1;
|
|
case 171:
|
|
TimerStop(&pLink->Ti);
|
|
goto label_140_1;
|
|
case 172:
|
|
pLink->Vb=STATE_LOCAL_BUSY|STATE_REMOTE_BUSY;
|
|
goto label_146_1;
|
|
case 173:
|
|
pLink->Vb=STATE_LOCAL_BUSY|STATE_REMOTE_BUSY;
|
|
goto label_7_2;
|
|
case 174:
|
|
AdjustWw(pLink);
|
|
case 175:
|
|
label_175_1:
|
|
pLink->Vb=STATE_LOCAL_BUSY|STATE_REMOTE_BUSY;
|
|
label_174_2:
|
|
pLink->Is_Ct=pLink->N2;
|
|
goto label_169_1;
|
|
case 176:
|
|
pLink->State=13;
|
|
label_176_1:
|
|
pLink->Vb=STATE_LOCAL_BUSY|STATE_REMOTE_BUSY;
|
|
goto label_145_2;
|
|
case 177:
|
|
AdjustWw(pLink);
|
|
goto label_174_2;
|
|
case 178:
|
|
pLink->State=16;
|
|
goto label_5_1;
|
|
case 179:
|
|
DLC_RR_COMMAND(1);
|
|
goto label_152_1;
|
|
case 180:
|
|
pLink->State=8;
|
|
AdjustWw(pLink);
|
|
pLink->Is_Ct=pLink->N2;
|
|
goto label_125_1;
|
|
case 181:
|
|
pLink->State=8;
|
|
goto label_125_1;
|
|
case 182:
|
|
pLink->State=8;
|
|
AdjustWw(pLink);
|
|
pLink->Is_Ct=pLink->N2;
|
|
goto label_126_2;
|
|
case 183:
|
|
pLink->State=8;
|
|
goto label_126_2;
|
|
case 185:
|
|
DLC_RR_RESPONSE(1);
|
|
goto label_165_1;
|
|
case 186:
|
|
DLC_RR_RESPONSE(1);
|
|
goto label_166_1;
|
|
case 187:
|
|
label_187_1:
|
|
pLink->State=7;
|
|
goto label_167_1;
|
|
case 188:
|
|
DLC_RR_RESPONSE(1);
|
|
goto label_136_1;
|
|
case 190:
|
|
pLink->State=7;
|
|
goto label_139_1;
|
|
case 191:
|
|
AdjustWw(pLink);
|
|
case 192:
|
|
label_192_1:
|
|
pLink->Vb=STATE_REMOTE_BUSY;
|
|
label_191_2:
|
|
pLink->Is_Ct=pLink->N2;
|
|
goto label_189_1;
|
|
case 193:
|
|
pLink->State=15;
|
|
goto label_145_1;
|
|
case 194:
|
|
AdjustWw(pLink);
|
|
goto label_191_2;
|
|
case 195:
|
|
DLC_DM(pLink->Pf);
|
|
EVENT_INDICATION(CONFIRM_DISCONNECT);
|
|
label_195_1:
|
|
pLink->Vi=0;
|
|
goto label_54_2;
|
|
case 196:
|
|
pLink->Vi=0;
|
|
goto label_53_1;
|
|
case 197:
|
|
EVENT_INDICATION(INDICATE_DM_DISC_RECEIVED);
|
|
goto label_195_1;
|
|
case 198:
|
|
pLink->Vi=0;
|
|
TimerStart(&pLink->Ti);
|
|
goto label_90_3;
|
|
case 199:
|
|
EVENT_INDICATION(INDICATE_RESET);
|
|
goto label_9_2;
|
|
case 200:
|
|
pLink->State=13;
|
|
pLink->Vb=STATE_LOCAL_BUSY|STATE_REMOTE_BUSY;
|
|
goto label_113_1;
|
|
case 201:
|
|
pLink->State=8;
|
|
pLink->P_Ct=pLink->N2;
|
|
goto label_117_1;
|
|
case 202:
|
|
pLink->State=5;
|
|
pLink->Vb=0;
|
|
EVENT_INDICATION(INDICATE_REMOTE_READY);
|
|
label_202_1:
|
|
UpdateVa(pLink);
|
|
goto label_125_1;
|
|
case 203:
|
|
pLink->State=15;
|
|
pLink->Ir_Ct=pLink->N3;
|
|
label_203_1:
|
|
DLC_REJ_RESPONSE(0);
|
|
UpdateVa(pLink);
|
|
TimerStop(&pLink->T2);
|
|
goto label_166_1;
|
|
case 204:
|
|
pLink->State=15;
|
|
pLink->Ir_Ct=pLink->N3;
|
|
TimerStop(&pLink->T2);
|
|
label_204_1:
|
|
UpdateVa(pLink);
|
|
label_204_2:
|
|
usRetStatus=DLC_STATUS_DISCARD_INFO_FIELD;
|
|
goto label_169_1;
|
|
case 205:
|
|
pLink->State=7;
|
|
pLink->Vb=0;
|
|
EVENT_INDICATION(INDICATE_REMOTE_READY);
|
|
goto label_203_1;
|
|
case 206:
|
|
pLink->State=5;
|
|
label_206_1:
|
|
pLink->Vb=0;
|
|
label_206_2:
|
|
EVENT_INDICATION(INDICATE_REMOTE_READY);
|
|
StartSendProcessAndLock(pLink);
|
|
goto label_75_1;
|
|
case 207:
|
|
pLink->State=5;
|
|
label_207_1:
|
|
StartSendProcessAndLock(pLink);
|
|
label_207_2:
|
|
pLink->Vb=0;
|
|
label_207_3:
|
|
EVENT_INDICATION(INDICATE_REMOTE_READY);
|
|
goto label_76_1;
|
|
case 208:
|
|
pLink->Is_Ct--;
|
|
ResendPackets(pLink),UpdateVa(pLink);
|
|
pLink->State=5;
|
|
pLink->Vb=0;
|
|
EVENT_INDICATION(INDICATE_REMOTE_READY);
|
|
StartSendProcessAndLock(pLink);
|
|
goto label_148_1;
|
|
case 209:
|
|
pLink->State=5;
|
|
StartSendProcessAndLock(pLink);
|
|
label_209_1:
|
|
pLink->Vb=0;
|
|
EVENT_INDICATION(INDICATE_REMOTE_READY);
|
|
UpdateVa(pLink);
|
|
goto label_138_1;
|
|
case 210:
|
|
pLink->State=8;
|
|
DLC_RR_COMMAND(1);
|
|
label_210_1:
|
|
pLink->Ir_Ct=pLink->N3;
|
|
goto label_209_1;
|
|
case 211:
|
|
pLink->State=5;
|
|
StartSendProcessAndLock(pLink);
|
|
goto label_210_1;
|
|
case 212:
|
|
pLink->State=8;
|
|
label_212_1:
|
|
DLC_RR_COMMAND(1);
|
|
goto label_207_2;
|
|
case 213:
|
|
pLink->State=8;
|
|
pLink->Vb=STATE_REMOTE_BUSY;
|
|
goto label_82_1;
|
|
case 214:
|
|
pLink->State=9;
|
|
label_214_1:
|
|
DLC_RNR_COMMAND(1);
|
|
goto label_86_3;
|
|
case 215:
|
|
pLink->State=6;
|
|
label_215_1:
|
|
pLink->Vb=STATE_LOCAL_BUSY;
|
|
goto label_206_2;
|
|
case 216:
|
|
pLink->Is_Ct--;
|
|
ResendPackets(pLink),UpdateVa(pLink);
|
|
pLink->State=6;
|
|
pLink->Vb=STATE_LOCAL_BUSY;
|
|
EVENT_INDICATION(INDICATE_REMOTE_READY);
|
|
StartSendProcessAndLock(pLink);
|
|
goto label_169_1;
|
|
case 217:
|
|
pLink->State=9;
|
|
label_217_1:
|
|
UpdateVa(pLink),SEND_RNR_CMD(1);
|
|
label_217_2:
|
|
pLink->Vb=STATE_LOCAL_BUSY;
|
|
goto label_169_1;
|
|
case 218:
|
|
pLink->State=6;
|
|
EVENT_INDICATION(INDICATE_REMOTE_READY);
|
|
StartSendProcessAndLock(pLink);
|
|
UpdateVa(pLink);
|
|
goto label_217_2;
|
|
case 219:
|
|
pLink->State=9;
|
|
label_219_1:
|
|
DLC_RNR_COMMAND(1);
|
|
label_219_2:
|
|
pLink->Vb=STATE_LOCAL_BUSY;
|
|
goto label_207_3;
|
|
case 220:
|
|
pLink->State=6;
|
|
StartSendProcessAndLock(pLink);
|
|
goto label_219_2;
|
|
case 221:
|
|
TimerStop(&pLink->Ti);
|
|
pLink->Vb=0;
|
|
goto label_102_1;
|
|
case 222:
|
|
pLink->State=16;
|
|
goto label_86_1;
|
|
case 223:
|
|
TimerStop(&pLink->T1);
|
|
goto label_55_1;
|
|
case 224:
|
|
pLink->State=6;
|
|
UpdateVa(pLink);
|
|
goto label_160_1;
|
|
case 225:
|
|
pLink->State=6;
|
|
goto label_204_1;
|
|
case 227:
|
|
label_227_1:
|
|
ResendPackets(pLink),UpdateVa(pLink);
|
|
goto label_169_1;
|
|
case 228:
|
|
pLink->State=19;
|
|
EVENT_INDICATION(INDICATE_REMOTE_BUSY);
|
|
goto label_96_2;
|
|
case 229:
|
|
pLink->State=19;
|
|
EVENT_INDICATION(INDICATE_REMOTE_BUSY);
|
|
StopSendProcessAndLock(pLink);
|
|
UpdateVa(pLink);
|
|
goto label_175_1;
|
|
case 230:
|
|
pLink->State=19;
|
|
pLink->Vb=STATE_LOCAL_BUSY|STATE_REMOTE_BUSY;
|
|
label_230_1:
|
|
DLC_RNR_RESPONSE(0);
|
|
break;
|
|
case 231:
|
|
pLink->State=10;
|
|
DLC_RR_COMMAND(1);
|
|
goto label_86_3;
|
|
case 232:
|
|
pLink->State=12;
|
|
goto label_202_1;
|
|
case 233:
|
|
pLink->State=12;
|
|
usRetStatus=STATUS_SUCCESS;pLink->Vr+=2;
|
|
UpdateVa(pLink);
|
|
goto label_189_1;
|
|
case 234:
|
|
pLink->State=7;
|
|
goto label_206_1;
|
|
case 235:
|
|
pLink->State=7;
|
|
pLink->Is_Ct--;
|
|
ResendPackets(pLink),UpdateVa(pLink);
|
|
label_235_1:
|
|
StartSendProcessAndLock(pLink);
|
|
label_235_2:
|
|
pLink->Vb=0;
|
|
EVENT_INDICATION(INDICATE_REMOTE_READY);
|
|
goto label_189_1;
|
|
case 236:
|
|
UpdateVa(pLink),SEND_RR_CMD(1);
|
|
pLink->State=10;
|
|
goto label_235_2;
|
|
case 237:
|
|
pLink->State=7;
|
|
UpdateVa(pLink);
|
|
goto label_235_1;
|
|
case 238:
|
|
pLink->State=10;
|
|
goto label_212_1;
|
|
case 239:
|
|
pLink->State=7;
|
|
goto label_207_1;
|
|
case 240:
|
|
pLink->State=18;
|
|
DLC_RR_RESPONSE(0);
|
|
case 261:
|
|
label_261_1:
|
|
pLink->Vb=STATE_REMOTE_BUSY;
|
|
break;
|
|
case 241:
|
|
pLink->State=18;
|
|
goto label_149_1;
|
|
case 242:
|
|
pLink->State=9;
|
|
AdjustWw(pLink);
|
|
pLink->Is_Ct=pLink->N2;
|
|
label_242_1:
|
|
usRetStatus=DLC_STATUS_DISCARD_INFO_FIELD;
|
|
goto label_230_1;
|
|
case 243:
|
|
pLink->State=9;
|
|
goto label_242_1;
|
|
case 244:
|
|
pLink->State=9;
|
|
AdjustWw(pLink);
|
|
pLink->Is_Ct=pLink->N2;
|
|
goto label_204_2;
|
|
case 245:
|
|
pLink->State=9;
|
|
goto label_204_2;
|
|
case 246:
|
|
pLink->State=14;
|
|
goto label_167_1;
|
|
case 247:
|
|
label_247_1:
|
|
ResendPackets(pLink);
|
|
break;
|
|
case 248:
|
|
DLC_RNR_RESPONSE(1);
|
|
goto label_247_1;
|
|
case 249:
|
|
pLink->Vs=pLink->Nr;
|
|
label_249_1:
|
|
pLink->State=14;
|
|
goto label_139_1;
|
|
case 250:
|
|
pLink->State=19;
|
|
goto label_176_1;
|
|
case 251:
|
|
TimerStop(&pLink->Ti);
|
|
pLink->Vc=0;
|
|
TimerStart(&pLink->T1);
|
|
pLink->State=3;
|
|
DLC_DISC(1);
|
|
UpdateVaChkpt(pLink);
|
|
label_251_1:
|
|
pLink->P_Ct=pLink->N2;
|
|
goto label_261_1;
|
|
case 252:
|
|
label_252_1:
|
|
AdjustWw(pLink);
|
|
break;
|
|
case 253:
|
|
EVENT_INDICATION(INDICATE_REMOTE_READY);
|
|
goto label_249_1;
|
|
case 254:
|
|
pLink->State=9;
|
|
label_254_1:
|
|
pLink->Vb=STATE_LOCAL_BUSY;
|
|
goto label_230_1;
|
|
case 255:
|
|
DLC_REJ_RESPONSE(0);
|
|
case 266:
|
|
label_266_1:
|
|
pLink->State=10;
|
|
usRetStatus=DLC_STATUS_DISCARD_INFO_FIELD;
|
|
pLink->Is_Ct=pLink->N2;
|
|
goto label_252_1;
|
|
case 256:
|
|
DLC_REJ_RESPONSE(0);
|
|
case 267:
|
|
label_267_1:
|
|
pLink->State=10;
|
|
goto label_166_1;
|
|
case 257:
|
|
DLC_REJ_RESPONSE(1);
|
|
goto label_266_1;
|
|
case 258:
|
|
DLC_REJ_RESPONSE(1);
|
|
goto label_267_1;
|
|
case 259:
|
|
DLC_REJ_RESPONSE(0);
|
|
goto label_187_1;
|
|
case 260:
|
|
pLink->Vp=pLink->Nr;
|
|
label_260_1:
|
|
pLink->State=8;
|
|
DLC_RR_COMMAND(1);
|
|
TimerStart(&pLink->T1);
|
|
goto label_139_2;
|
|
case 262:
|
|
DLC_RR_RESPONSE(1);
|
|
goto label_261_1;
|
|
case 263:
|
|
pLink->Vp=pLink->Vs;
|
|
goto label_260_1;
|
|
case 264:
|
|
UpdateVaChkpt(pLink),pLink->Vp=pLink->Vs;
|
|
pLink->State=8;
|
|
label_264_1:
|
|
DLC_RR_COMMAND(1);
|
|
TimerStart(&pLink->T1);
|
|
break;
|
|
case 265:
|
|
pLink->State=16;
|
|
goto label_254_1;
|
|
case 268:
|
|
DLC_RR_RESPONSE(1);
|
|
goto label_266_1;
|
|
case 269:
|
|
DLC_RR_RESPONSE(1);
|
|
goto label_267_1;
|
|
case 270:
|
|
UpdateVaChkpt(pLink),pLink->Vp=pLink->Nr;
|
|
pLink->Is_Ct--;
|
|
label_270_1:
|
|
pLink->State=10;
|
|
goto label_264_1;
|
|
case 271:
|
|
pLink->Is_Ct=pLink->N2;
|
|
case 272:
|
|
label_272_1:
|
|
pLink->Vp=pLink->Vs;
|
|
UpdateVaChkpt(pLink);
|
|
goto label_270_1;
|
|
case 273:
|
|
TimerStop(&pLink->Ti);
|
|
pLink->State=10;
|
|
pLink->Vp=pLink->Vs;
|
|
DLC_RR_COMMAND(1);
|
|
TimerStart(&pLink->T1);
|
|
goto label_251_1;
|
|
case 274:
|
|
pLink->State=16;
|
|
goto label_214_1;
|
|
case 275:
|
|
pLink->State=13;
|
|
EVENT_INDICATION(INDICATE_REMOTE_READY);
|
|
UpdateVa(pLink);
|
|
goto label_242_1;
|
|
case 276:
|
|
pLink->State=13;
|
|
EVENT_INDICATION(INDICATE_REMOTE_READY);
|
|
goto label_204_1;
|
|
case 277:
|
|
pLink->State=14;
|
|
goto label_215_1;
|
|
case 278:
|
|
pLink->State=14;
|
|
pLink->Is_Ct--;
|
|
pLink->Vb=STATE_LOCAL_BUSY;
|
|
EVENT_INDICATION(INDICATE_REMOTE_READY);
|
|
StartSendProcessAndLock(pLink);
|
|
goto label_227_1;
|
|
case 279:
|
|
label_279_1:
|
|
pLink->State=14;
|
|
goto label_76_1;
|
|
case 280:
|
|
pLink->State=19;
|
|
label_280_1:
|
|
UpdateVa(pLink);
|
|
goto label_169_1;
|
|
case 281:
|
|
pLink->State=16;
|
|
EVENT_INDICATION(INDICATE_REMOTE_READY);
|
|
goto label_217_1;
|
|
case 282:
|
|
pLink->State=14;
|
|
pLink->Vb=STATE_LOCAL_BUSY;
|
|
EVENT_INDICATION(INDICATE_REMOTE_READY);
|
|
goto label_280_1;
|
|
case 283:
|
|
pLink->State=16;
|
|
goto label_219_1;
|
|
case 284:
|
|
pLink->Vb=STATE_LOCAL_BUSY;
|
|
EVENT_INDICATION(INDICATE_REMOTE_READY);
|
|
goto label_279_1;
|
|
case 285:
|
|
pLink->P_Ct--;
|
|
goto label_11_1;
|
|
case 286:
|
|
EVENT_INDICATION(INDICATE_TI_TIMER_EXPIRED);
|
|
goto label_103_1;
|
|
case 287:
|
|
EVENT_INDICATION(INDICATE_TI_TIMER_EXPIRED);
|
|
goto label_53_2;
|
|
case 288:
|
|
EVENT_INDICATION(INDICATE_TI_TIMER_EXPIRED);
|
|
goto label_54_2;
|
|
case 289:
|
|
EVENT_INDICATION(INDICATE_FRMR_RECEIVED);
|
|
break;
|
|
};
|
|
#endif
|
|
|
|
//#########################################################################
|
|
|
|
//************************* CODE BEGINS ***************************
|
|
//
|
|
// Check first, if we have any events; FRMR data must be setup
|
|
// before we can send or queue the FRMR response/command
|
|
// frame.
|
|
//
|
|
if (uchSendId != 0)
|
|
{
|
|
SendLlcFrame( pLink, uchSendId );
|
|
}
|
|
|
|
//
|
|
// We must now release the locks when we call upper levels.
|
|
// They may call back this data link. Note, that we kept
|
|
// the link closed during send, because the order of
|
|
// of the sent packet must not be changed.
|
|
//
|
|
RELEASE_SPIN_LOCK( &pLink->SpinLock );
|
|
|
|
if (pLink->DlcStatus.StatusCode != 0)
|
|
{
|
|
if (usRetStatus == DLC_STATUS_SUCCESS)
|
|
{
|
|
SaveStatusChangeEvent(
|
|
pLink,
|
|
pLink->Gen.pAdapterContext->LookaheadInfoBuffer,
|
|
boolResponse
|
|
);
|
|
}
|
|
else
|
|
{
|
|
pLink->DlcStatus.StatusCode = 0;
|
|
}
|
|
}
|
|
return usRetStatus;
|
|
}
|
|
|