Class: OpenC3::TcpipClientInterface

Inherits:
StreamInterface show all
Defined in:
lib/openc3/interfaces/tcpip_client_interface.rb

Overview

Base class for interfaces that act as a TCP/IP client

Direct Known Subclasses

LincInterface

Constant Summary

Constants included from Api

Api::DELAY_METRICS, Api::DURATION_METRICS, Api::SUBSCRIPTION_DELIMITER, Api::SUM_METRICS

Constants included from ApiShared

ApiShared::DEFAULT_TLM_POLLING_RATE

Constants included from Extract

Extract::SCANNING_REGULAR_EXPRESSION

Instance Attribute Summary

Attributes inherited from StreamInterface

#stream

Attributes inherited from Interface

#auto_reconnect, #bytes_read, #bytes_written, #cmd_routers, #cmd_target_names, #config_params, #connect_on_startup, #disable_disconnect, #interfaces, #name, #num_clients, #options, #packet_log_writer_pairs, #protocol_info, #read_count, #read_protocols, #read_queue_size, #read_raw_data, #read_raw_data_time, #reconnect_delay, #routers, #scheduler, #secrets, #state, #stored_packet_log_writer_pairs, #stream_log_pair, #target_names, #tlm_target_names, #write_count, #write_protocols, #write_queue_size, #written_raw_data, #written_raw_data_time

Instance Method Summary collapse

Methods inherited from StreamInterface

#connected?, #disconnect, #read_interface, #write_interface

Methods inherited from Interface

#_write, #add_protocol, #as_json, #connected?, #convert_data_to_packet, #convert_packet_to_data, #copy_to, #disconnect, #interface_cmd, #protocol_cmd, #read, #read_allowed?, #read_interface, #read_interface_base, #set_option, #start_raw_logging, #stop_raw_logging, #write, #write_allowed?, #write_interface, #write_interface_base, #write_raw, #write_raw_allowed?

Methods included from Api

#_build_cmd_output_string, #_cmd_implementation, #_extract_target_command_names, #_extract_target_command_parameter_names, #_extract_target_packet_item_names, #_extract_target_packet_names, #_get_and_set_cmd, #_get_item, #_limits_group, #_set_tlm_process_args, #_tlm_process_args, #_validate_tlm_type, #build_cmd, #cmd, #cmd_no_checks, #cmd_no_hazardous_check, #cmd_no_range_check, #cmd_raw, #cmd_raw_no_checks, #cmd_raw_no_hazardous_check, #cmd_raw_no_range_check, #config_tool_names, #connect_interface, #connect_router, #delete_config, #disable_cmd, #disable_limits, #disable_limits_group, #disconnect_interface, #disconnect_router, #enable_cmd, #enable_limits, #enable_limits_group, #get_all_cmd_names, #get_all_cmds, #get_all_interface_info, #get_all_router_info, #get_all_settings, #get_all_target_info, #get_all_tlm, #get_all_tlm_names, #get_cmd, #get_cmd_buffer, #get_cmd_cnt, #get_cmd_cnts, #get_cmd_hazardous, #get_cmd_time, #get_cmd_value, #get_interface, #get_interface_names, #get_item, #get_limits, #get_limits_events, #get_limits_groups, #get_limits_set, #get_limits_sets, #get_metrics, #get_out_of_limits, #get_overall_limits_state, #get_overrides, #get_packet_derived_items, #get_packets, #get_param, #get_router, #get_router_names, #get_setting, #get_settings, #get_target, #get_target_interfaces, #get_target_names, #get_tlm, #get_tlm_buffer, #get_tlm_cnt, #get_tlm_cnts, #get_tlm_packet, #get_tlm_values, #inject_tlm, #interface_cmd, #interface_protocol_cmd, #limits_enabled?, #list_configs, #list_settings, #load_config, #map_target_to_interface, #normalize_tlm, #offline_access_needed, #override_tlm, #router_cmd, #router_protocol_cmd, #save_config, #send_raw, #set_limits, #set_limits_set, #set_offline_access, #set_setting, #set_tlm, #start_raw_logging_interface, #start_raw_logging_router, #stash_all, #stash_delete, #stash_get, #stash_keys, #stash_set, #stop_raw_logging_interface, #stop_raw_logging_router, #subscribe_packets, #tlm, #tlm_formatted, #tlm_raw, #tlm_variable, #tlm_with_units

Constructor Details

#initialize(hostname, write_port, read_port, write_timeout, read_timeout, protocol_type = nil, *protocol_args) ⇒ TcpipClientInterface

Returns a new instance of TcpipClientInterface.

Parameters:

  • hostname (String)

    Machine to connect to

  • write_port (Integer)

    Port to write commands to

  • read_port (Integer)

    Port to read telemetry from

  • write_timeout (Float)

    Seconds to wait before aborting writes

  • read_timeout (Float|nil)

    Seconds to wait before aborting reads. Pass nil to block until the read is complete.

  • protocol_type (String) (defaults to: nil)

    Name of the protocol to use with this interface

  • protocol_args (Array<String>)

    Arguments to pass to the protocol



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/openc3/interfaces/tcpip_client_interface.rb', line 38

def initialize(
  hostname,
  write_port,
  read_port,
  write_timeout,
  read_timeout,
  protocol_type = nil,
  *protocol_args
)

  super(protocol_type, protocol_args)

  @hostname = hostname
  @write_port = ConfigParser.handle_nil(write_port)
  @read_port = ConfigParser.handle_nil(read_port)
  @write_timeout = write_timeout
  @read_timeout = read_timeout
  @read_allowed = false unless @read_port
  @write_allowed = false unless @write_port
  @write_raw_allowed = false unless @write_port
end

Instance Method Details

#connectObject

Connects the OpenC3::TcpipClientStream by passing the initialization parameters to the OpenC3::TcpipClientStream.



79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/openc3/interfaces/tcpip_client_interface.rb', line 79

def connect
  @stream = TcpipClientStream.new(
    @hostname,
    @write_port,
    @read_port,
    @write_timeout,
    @read_timeout
  )
  # Pass down options to the stream
  @options.each do |option_name, option_values|
    @stream.set_option(option_name, option_values)
  end
  super()
end

#connection_stringObject



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/openc3/interfaces/tcpip_client_interface.rb', line 60

def connection_string
  # Probably most common is write == read so handle that
  if @write_port == @read_port
    return "#{@hostname}:#{@write_port} (R/W)"
  end

  result = ''
  if @write_port
    result += "#{@hostname}:#{@write_port} (write)"
  end
  if @read_port
    result += ' ' if result.length != 0
    result += "#{@hostname}:#{@read_port} (read)"
  end
  return result
end