
  CONST
    incoming_pdu_base = 400(16), { From the device to the host.
    outgoing_pdu_base = 480(16); { From the host to the device.

  CONST
    nlc$ta_connect_request = incoming_pdu_base + 3,          {403(16)
    nlc$ta_connect_response = incoming_pdu_base + 4,         {404(16)
    nlc$ta_data_request = incoming_pdu_base + 5,             {405(16)
    nlc$ta_disconnect_request = incoming_pdu_base + 7,       {407(16)
    nlc$ta_expedited_request = incoming_pdu_base + 6,        {406(16)

    nlc$ta_connect_confirmation = outgoing_pdu_base + 6,     {486(16)
    nlc$ta_connect_indication = outgoing_pdu_base + 5,       {485(16)
    nlc$ta_data_indication = outgoing_pdu_base + 7,          {487(16)
    nlc$ta_disconnect_indication = outgoing_pdu_base + 10,   {48A(16)
    nlc$ta_expedited_confirmation = outgoing_pdu_base + 9,   {489(16)
    nlc$ta_expedited_indication = outgoing_pdu_base + 8,     {488(16)
    nlc$ta_max_protocol_data_unit = 0ffff(16);

  TYPE

    nlt$ta_header_length = 0 .. 0ffff(16),

    nlt$ta_protocol_data_unit_kind = 0 .. nlc$ta_max_protocol_data_unit,

    nlt$ta_connect_confirm_pdu = record
      length: nlt$ta_header_length,
      kind: nlt$ta_protocol_data_unit_kind,
      checksum: boolean,
      expedited_data: boolean,
      quality_of_service_length: nlt$ta_quality_of_service_len,
{     ( Variable fields )
{     quality_of_service: 0 .. 49 bytes
{     response_data: 0 .. 32 bytes
    recend,

    nlt$ta_connect_indication_pdu = record
      length: nlt$ta_header_length,
      kind: nlt$ta_protocol_data_unit_kind,
      destination_transport_sap: nlt$ta_sap_selector,
      checksum: boolean,
      expedited_data: boolean,
      source_transport_sap_length: nat$osi_tsap_selector_length,
{     ( Variable fields )
{     source_transport_sap: 0 .. 255 bytes
{     source_nsap_address_len: 1 byte
{     source_nsap_address: 1 .. 255 bytes
{     quality_of_service_length: 1 byte
{     quality_of_service: 0 .. 49 bytes
{     connect_data: 0 .. 32 bytes
    recend,

    nlt$ta_connect_request_pdu = record
      length: nlt$ta_header_length,
      kind: nlt$ta_protocol_data_unit_kind,
      source_transport_sap: nlt$ta_sap_selector,
      checksum: boolean,
      expedited_data: boolean,
      priority: nlt$ta_priority,
      destination_transport_sap_len: nat$osi_tsap_selector_length,
{     ( Variable fields )
{     destination_transport_sap: 0 .. 255 bytes
{     destination_nsap_address_len: 1 byte
{     destination_nsap_address: 1 .. 255 bytes
{     quality_of_service_length: 1 byte
{     quality_of_service: 0 .. 49 bytes
{     connect_data: 0 .. 32 bytes
    recend,

    nlt$ta_connect_request_pdu_v2 = record
      length: nlt$ta_header_length,
      kind: nlt$ta_protocol_data_unit_kind,
      source_transport_sap: nlt$ta_sap_selector,
      checksum: boolean,
      expedited_data: boolean,
      priority: nlt$ta_priority,
      preferred_protocol_class: nat$ta_preferred_protocol_class,
      alternate_protocol_class: nat$ta_alternate_protocol_class,
      destination_transport_sap_len: nat$osi_tsap_selector_length,
{     ( Variable fields )
{     destination_transport_sap: 0 .. 255 bytes
{     destination_nsap_address_len: 1 byte
{     destination_nsap_address: 1 .. 255 bytes
{     quality_of_service_length: 1 byte
{     quality_of_service: 0 .. 49 bytes
{     connect_data: 0 .. 32 bytes
    recend,

    nlt$ta_connect_response_pdu = record
      length: nlt$ta_header_length,
      kind: nlt$ta_protocol_data_unit_kind,
      checksum: boolean,
      expedited_data: boolean,
      priority: nlt$ta_priority,
      quality_of_service_length: nlt$ta_quality_of_service_len,
{     ( Variable fields )
{     quality_of_service: 0 .. 49 bytes
{     response_data: 0 .. 32 bytes
    recend,

    nlt$ta_data_pdu = record
      length: nlt$ta_header_length,
      kind: nlt$ta_protocol_data_unit_kind,
      end_of_message: boolean,
{     ( Variable fields )
{     data: 1 .. maximum number of bytes allowed by the communication device
    recend,

    nlt$ta_disconnect_indicat_pdu = record
      length: nlt$ta_header_length,
      kind: nlt$ta_protocol_data_unit_kind,
      proprietary_reason: nlt$ta_disconnect_reason, { CDNA disconnect reason
      osi_8073_reason: nat$osi_disconnect_reason, { OSI disconnect reason
{     ( Variable fields )
{     disconnect_data: 0 .. 64 bytes
    recend,

    nlt$ta_disconnect_request_pdu = record
      length: nlt$ta_header_length,
      kind: nlt$ta_protocol_data_unit_kind,
      proprietary_reason: nlt$ta_disconnect_reason,
{     ( Variable fields )
{     user_data: 0 .. 64 bytes
    recend,

    nlt$ta_expedited_data_pdu = record
      length: nlt$ta_header_length,
      kind: nlt$ta_protocol_data_unit_kind,
{     ( Variable fields )
{     expedited_data: 1 .. 16 bytes    The expedited confirm pdu does not have data field.
    recend;

*copyc nat$osi_disconnect_reason
*copyc nat$osi_transport_sap_selector
*copyc nat$ta_alternate_protocol_class
*copyc nat$ta_preferred_protocol_class
*copyc nlt$ta_disconnect_reason
*copyc nlt$ta_priority
*copyc nlt$ta_quality_of_service
*copyc nlt$ta_sap_selector

