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

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_target_enabled, #cmd_target_names, #config_params, #connect_on_startup, #disable_disconnect, #interfaces, #name, #num_clients, #options, #protocol_info, #read_count, #read_protocols, #read_queue_size, #read_raw_data, #read_raw_data_time, #reconnect_delay, #routers, #save_raw_data, #scheduler, #secrets, #state, #stream_log_pair, #target_names, #tlm_target_enabled, #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, #post_connect, #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

#_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_tlm, #get_all_tlm_item_names, #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_available, #get_tlm_buffer, #get_tlm_cnt, #get_tlm_cnts, #get_tlm_packet, #get_tlm_values, #inject_tlm, #interface_cmd, #interface_details, #interface_protocol_cmd, #interface_target_disable, #interface_target_enable, #limits_enabled?, #list_configs, #list_settings, #load_config, #map_target_to_interface, #map_target_to_router, #normalize_tlm, #offline_access_needed, #override_tlm, #router_cmd, #router_details, #router_protocol_cmd, #router_target_disable, #router_target_enable, #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, #unmap_target_from_interface, #unmap_target_from_router, #update_news, #update_plugin_store

Methods included from CmdLog

#_build_cmd_output_string

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
59
60
61
62
# 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)
  @write_port = Integer(@write_port) if @write_port
  @read_port = ConfigParser.handle_nil(read_port)
  @read_port = Integer(@read_port) if @read_port
  @write_timeout = ConfigParser.handle_nil(write_timeout)
  @write_timeout = Float(@write_timeout) if @write_timeout
  @read_timeout = ConfigParser.handle_nil(read_timeout)
  @read_timeout = Float(@read_timeout) if @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.



83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/openc3/interfaces/tcpip_client_interface.rb', line 83

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



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/openc3/interfaces/tcpip_client_interface.rb', line 64

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

#detailsObject



98
99
100
101
102
103
104
105
106
# File 'lib/openc3/interfaces/tcpip_client_interface.rb', line 98

def details
  result = super()
  result['hostname'] = @hostname
  result['write_port'] = @write_port
  result['read_port'] = @read_port
  result['write_timeout'] = @write_timeout
  result['read_timeout'] = @read_timeout
  return result
end