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_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



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

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.



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

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



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

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



93
94
95
96
97
98
99
100
101
# File 'lib/openc3/interfaces/tcpip_client_interface.rb', line 93

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