  TYPE
    nat$ica_pp_log_response = packed record
      fill1: 0 .. 07ff(16),
      error_id: nat$ica_pp_error_id,
      fill2: 0 .. 0fff(16),
      operation_kind: nat$ica_pp_operation_kind,
{ The following bits represent the symptom codes diagnosed by the ICA pp.
      general_status_error: boolean,
      channel_error_flag: boolean,
      channel_deactivation_error: boolean,
      message_length_verify_error: boolean,
      channel_active: boolean,
      channel_full: boolean,
      channel_empty: boolean,
      message_content_error: boolean,
      incomplete_transfer: boolean,
      maximum_size_exceeded: boolean,
{ End of symptom_codes.
      fill3: 0 .. 3f(16),
      timed_out_function: 0 .. 0ffff(16),
      previous_function: 0 .. 0ffff(16),
      error_word1: 0 .. 0ffff(16),
      error_word2: 0 .. 0ffff(16),
      transition_state: 0 .. 0ffff(16),
      expected_length: 0 .. 0ffffffff(16),
      actual_length: 0 .. 0ffffffff(16),
      fill4: 0 .. 3fff(16),
      error_kind: nat$ica_pp_error_kind,
      retry_count: 0 .. 0ffff(16),
      detailed_status_included: boolean,
      general_status_included: boolean,
      ica_is_down: boolean,
      fill5: 0 .. 1fff(16),
      general_status: 0 .. 0ffff(16),
    recend,

    nat$ica_pp_error_id = (nac$ica_null_error_id, nac$ica_function_timeout,
      nac$ica_state_transition_fail, nac$ica_invalid_state_change,
      nac$ica_gen_status_busy_timeout, nac$ica_operation_failure,
      nac$ica_reset_busy_timeout, nac$ica_diagnostic_failure, nac$ica_gen_status_send_timeout,
      nac$ica_gen_status_avai_timeout, nac$ica_gen_status_content_fail, nac$ica_indet_output_parity,
      nac$ica_reset, nac$ica_operational, nac$ica_general_status_reject, nac$ica_channel_protocol_error,
      nac$ica_usage_data, nac$ica_invalid_flow_control),

    nat$ica_pp_operation_kind = (nac$ica_null_op_kind, nac$ica_op_write, nac$ica_op_read,
      nac$ica_op_read_det_status, nac$ica_op_q_previous_req, nac$ica_op_ch_active_timeout,
      nac$ica_op_read_diagnostic_cmd, nac$ica_op_status_return, nac$ica_read_gen_status,
      nac$ica_op_load_memory, nac$ica_op_enter_idle_state, nac$ica_op_enter_diag_state,
      nac$ica_op_set_ica_parameters, nac$ica_op_dump_memory, nac$ica_op_read_conf_test,
      nac$ica_op_send_ether_address),

    nat$ica_pp_error_kind = (nac$ica_recovered_error, nac$ica_unrecovered_error,
      nac$ica_intermediate_error, nac$ica_informative_message);

  TYPE
    nat$ica_general_status = packed record
      general_error: boolean,
      channel_error: boolean,
      pp_error: boolean,
      ica_error: boolean,
      fil1: boolean,
      data_available: boolean,
      state: nat$ica_states,
      send_data: boolean,
      busy: boolean,
      symptom_code: 0 .. 7,
      reset_code: nat$ica_reset_codes,
    recend;

  TYPE
    nat$ica_states = (nac$ica_reset_state, nac$ica_diagnostic_state, nac$ica_idle_state,
          nac$ica_operational_state);

  TYPE
    nat$ica_reset_codes = (nac$ica_no_rc, nac$ica_power_on, nac$ica_pp_reset,
          nac$ica_deadman_timeout, nac$ica_master_clear,
          nac$ica_reset_function, nac$ica_software_reset);

  TYPE
    nat$ica_detailed_status = packed record
      software_version_number: 0 .. 0ffff(16),
      rom_version_number: 0 .. 0ffff(16),
      board_number: 0 .. 0ffff(16),
      last_function: 0 .. 0ffff(16),
      error_1: nat$ica_ds_error_1,
      error_2: nat$ica_ds_error_2,
      last_but_one: 0 .. 0ffff(16),
      last_but_two: 0 .. 0ffff(16),
      messages_in_output_queue: 0 .. 0ffff(16),
      messages_in_input_queue: 0 .. 0ffff(16),
      number_of_free_buffers: 0 .. 0ffff(16),
      percent_of_free_buffers: 0 .. 0ffff(16),
    recend;

  TYPE
    nat$ica_ds_error_1 = packed record
      type_of_dma_error: nat$ica_dma_error,
      dma_controller_error: boolean,
      fil1: boolean,
      pp_overrun: boolean,
      input_data_truncated: boolean,
      channel_parity_error: boolean,
      channel_timeout: boolean,
      fil2: 0 .. 3f(16),
      formatted_output_error: boolean,
    recend;

  TYPE
    nat$ica_ds_error_2 = packed record
      fil1: 0 .. 1f(16),
      configuration_error_reason: nat$ica_config_error_reason,
      fil2: 0 .. 0f(16),
      invalid_data_packet: boolean,
      fil3: boolean,
      configuration_packet_error: boolean,
      ica_normal: boolean,
    recend;

  TYPE
    nat$ica_dma_error = (nac$ica_dma_no_error, nac$ica_dma_config_error,
          nac$ica_dma_timing_error, nac$ica_dma_count_error,
          nac$ica_dma_external_abort, nac$ica_dma_software_abort);


  TYPE
    nat$ica_config_error_reason = (nac$ica_config_no_error,
          nac$ica_config_no_system_addr, nac$ica_config_multicast_error,
          nac$ica_config_queue_length, nac$ica_config_statistic_type,
          nac$ica_config_single_bit_thr, nac$ica_config_reporting_int);


  TYPE
    nat$ica_osi_detailed_status = packed record
      channel_protocol_version: 0 .. 0ffff(16),
      error_detail: nat$ica_osi_error_detail,
      general_status: nat$ica_general_status,
      last_function: 0 .. 0ffff(16),
      last_but_one: 0 .. 0ffff(16),
      last_but_two: 0 .. 0ffff(16),
      max_pdu_size: 0 .. 0ffffffff(16),
    recend;

  TYPE
    nat$ica_osi_error_detail = packed record
      function_parity_error: boolean,
      invalid_function: boolean,
      channel_active_timeout: boolean,
      fil1: boolean,
      read_truncated_by_pp: boolean,
      fil2: 0 .. 7(16),
      write_length_error: boolean,
      write_format_error: boolean,
      write_parity_error: boolean,
      write_overrun: boolean,
      memory_parity_error: boolean,
      memory_address_error: boolean,
      fil3: 0 .. 3(16),
    recend;

