Class: Cosmos::SerialInterface

Inherits:
StreamInterface show all
Defined in:
lib/cosmos/interfaces/serial_interface.rb

Overview

Provides a base class for interfaces that use serial ports

Constant Summary

Constants included from Extract

Extract::SCANNING_REGULAR_EXPRESSION

Instance Attribute Summary

Attributes inherited from Interface

#auto_reconnect, #bytes_read, #bytes_written, #connect_on_startup, #disable_disconnect, #interfaces, #name, #num_clients, #options, #packet_log_writer_pairs, #raw_logger_pair, #read_count, #read_queue_size, #reconnect_delay, #routers, #target_names, #thread, #write_count, #write_queue_size

Instance Method Summary collapse

Methods inherited from StreamInterface

#bytes_read, #bytes_read=, #bytes_written, #bytes_written=, #connected?, #disconnect, #post_read_data, #post_read_packet, #pre_write_packet, #read, #write, #write_raw

Methods inherited from Interface

#connected?, #copy_to, #disconnect, #post_identify_packet, #read, #read_allowed?, #set_option, #start_raw_logging, #stop_raw_logging, #write, #write_allowed?, #write_raw, #write_raw_allowed?

Methods included from Api

#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, #connect_interface, #connect_router, #disable_limits, #disable_limits_group, #disconnect_interface, #disconnect_router, #enable_limits, #enable_limits_group, #get_cmd_hazardous, #get_cmd_list, #get_cmd_log_filename, #get_cmd_param_list, #get_cmd_time, #get_cmd_value, #get_interface_names, #get_limits, #get_limits_event, #get_limits_groups, #get_limits_set, #get_limits_sets, #get_out_of_limits, #get_overall_limits_state, #get_packet_data, #get_router_names, #get_server_message_log_filename, #get_stale, #get_target_list, #get_tlm_details, #get_tlm_item_list, #get_tlm_list, #get_tlm_log_filename, #get_tlm_packet, #get_tlm_values, #interface_state, #limits_enabled?, #map_target_to_interface, #router_state, #send_raw, #set_limits, #set_limits_set, #set_tlm, #set_tlm_raw, #start_cmd_log, #start_logging, #start_new_server_message_log, #start_raw_logging_interface, #start_raw_logging_router, #start_tlm_log, #stop_cmd_log, #stop_logging, #stop_raw_logging_interface, #stop_raw_logging_router, #stop_tlm_log, #subscribe_limits_events, #subscribe_packet_data, #tlm, #tlm_formatted, #tlm_raw, #tlm_variable, #tlm_with_units, #unsubscribe_limits_events, #unsubscribe_packet_data

Constructor Details

#initialize(write_port_name, read_port_name, baud_rate, parity, stop_bits, write_timeout, read_timeout, stream_protocol_type, *stream_protocol_args) ⇒ SerialInterface

Creates a serial interface which uses the specified stream protocol.

Parameters:

  • write_port_name (String)

    The name of the serial port to write

  • read_port_name (String)

    The name of the serial port to read

  • baud_rate (Integer)

    The serial port baud rate

  • parity (Symbol)

    The parity which is normally :NONE. Must be one of :NONE, :EVEN, or :ODD.

  • stop_bits (Integer)

    The number of stop bits which is normally 1.

  • write_timeout (Integer)

    The number of seconds to attempt the write before aborting

  • read_timeout (Integer)

    The number of seconds to attempt to read data from the serial port before aborting

  • stream_protocol_type (String)

    Combined with 'StreamProtocol' this should resolve to a COSMOS stream protocol class

  • stream_protocol_args (Array)

    Arguments to pass to the stream protocol class constructor



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/cosmos/interfaces/serial_interface.rb', line 35

def initialize(write_port_name,
               read_port_name,
               baud_rate,
               parity,
               stop_bits,
               write_timeout,
               read_timeout,
               stream_protocol_type,
               *stream_protocol_args)
  super(stream_protocol_type, *stream_protocol_args)

  @write_port_name = ConfigParser.handle_nil(write_port_name)
  @read_port_name  = ConfigParser.handle_nil(read_port_name)
  @baud_rate = baud_rate
  @parity = parity.to_s.intern
  @stop_bits = stop_bits
  @write_timeout = write_timeout
  @read_timeout = read_timeout

  @write_allowed     = false unless @write_port_name
  @write_raw_allowed = false unless @write_port_name
  @read_allowed      = false unless @read_port_name
end

Instance Method Details

#connectObject

Connects the stream protocol to a new Cosmos::SerialStream using the parameters passed in the constructor.



61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/cosmos/interfaces/serial_interface.rb', line 61

def connect
  stream = SerialStream.new(
    @write_port_name,
    @read_port_name,
    @baud_rate,
    @parity,
    @stop_bits,
    @write_timeout,
    @read_timeout)
  stream.raw_logger_pair = @raw_logger_pair
  @stream_protocol.connect(stream)
end