text: 
  //
  //  The LLC struct in the Link Data :
  //
  typdef union _LLC_HDR {
      struct _LLC_I {
          // C compilers should allocate the bits from lo to high
          UINT    fDSAP:7;    // Destination SAP
          UINT    fGI:1;      // Group / Indivual SAP
          UINT    fSSAP:7;    // Source SAP
          UINT    fCr:1;      // Command/Response
          UINT    fNs:7;      // Transmitter send sequence number
          UINT    fType:1;    // Set always to 0
          UINT    fNr:7;      // Transmitter receive sequence number
          UINT    fPF:1;      // Poll/Final Bit
      } I;    // Information frame
      struct LLC_S {
          UINT    fDSAP:7;    // Destination SAP
          UINT    fGI:1;      // Group / Indivual SAP
          UINT    fSSAP:7;    // Source SAP
          UINT    fCr:1;      // Command/Response
          UINT    fCmd:8;     // 0x80, 0x90, 0xA0, 0xB0
          UINT    fNr:7;      // Transmitter receive sequence number
          UINT    fPF:1;      // Poll/Final Bit
      } S;        // Supervisory frame
      struct _LLC_U {
          UINT    fDSAP:7;    // Destination SAP
          UINT    fGI:1;      // Group / Indivual SAP
          UINT    fSSAP:7;    // Source SAP
          UINT    fCr:1;      // Command/Response
          UINT    fCmd1:3;    // U- commands
          UINT    fPF:1;      // Poll/Final Bit
          UINT    fCmd2:2;    // U- commands
          UINT    fRes:2;     // the topmouts bits are always 11
      } U;        // U command frame
      struct _LLC_U_RAW {
          UINT    fDSAP:7;    // Destination SAP
          UINT    fGI:1;      // Group / Indivual SAP
          UINT    fSSAP:7;    // Source SAP
          UINT    fCr:1;      // Command/Response
          UINT    fCmd:8;     // U- command (OR THIS!!!)
          UINT    fPadding:8; // this is already data
      } rawU;        // U command frame
      // 
      struct _LLC_TYPE {
          UINT    fDSAP:7;    // Destination SAP
          UINT    fGI:1;      // Group / Indivual SAP
          UINT    fSSAP:7;    // Source SAP
          UINT    fCr:1;      // Command/Response
          UINT    fCmd:6;     // the command or Ns bits
          UINT    fIsUFrame:1; // 1 => U, 0 => S frame (if not I frame)
          UINT    fIsNotI:1;  // 0 => I frame
          UINT    fNr:7;      // Transmitter receive seq number for I/S
          UINT    fPF:1;      // Poll/Final Bit for I/S frames
      } type;
      ULONG   ulRawLLc;
  } LLC_HDR;
  
  // ... somewhere in the link struct
  LLCHDR xmtLcc;          // the next transmitted frame, set to 0 when done
  LLCHDR  rvcLcc;         // the last received frame
  
  //
  // The first index select the conditon, usActionId is returned if the
  // condition is true, otherwise the next element is executed
  typedef struct _COND_ACTS {
      USHORT  usConditionId;
      USHORT  usActionId;
  } COND_ACTS, FAR *PCOND_ACTS;
  
  //
  // Structure includes all 
  typedef struct _FSM {
  {   
      PCOND_ACTS  pActionSelectIds;           // condition-action pairs
      PUSHORT     pusActionPrimtives;         // action primitive procedures
      (USHORT *ActionSelect)(VOID *, PUSHORT, USHORT); // selects the action
         (UINT *ExecPrimitives)(VOID *, PUSHORT, USHORT); // execs selected action
      struct {
          BOOL    boolStateProcExists;
          (UINT * StateProcedure)( VOID *pContext, USHORT );
          PUSHORT pusInputs;              // returns action selection id
  #if sizeof(INT) == 4
          INT     iReserved;  // makes element 16 bytes even if 32 bit word
  #endif
      } aStates[1];      // for all states
  } FSM, FAR *PFSM;
  