class Kiss::KissSerial

Constants

DEFAULT_READ_BYTES
SERIAL_READ_TIMEOUT

Public Class Methods

new(com_port, baud=38400, parity=SerialPort::NONE, stop_bits=1, byte_size=8, read_bytes=DEFAULT_READ_BYTES, strip_df_start=true) click to toggle source
Calls superclass method Kiss::KissAbstract::new
# File lib/kiss/kiss_serial.rb, line 11
def initialize(com_port,
               baud=38400,
               parity=SerialPort::NONE,
               stop_bits=1,
               byte_size=8,
               read_bytes=DEFAULT_READ_BYTES,
               strip_df_start=true)
    super(strip_df_start)

    @com_port = com_port
    @baud = baud
    @parity = parity
    @stop_bits = stop_bits
    @byte_size = byte_size
    @read_bytes = read_bytes
    @serial = nil
    @exit_kiss = false
end

Public Instance Methods

close(*args, **kwargs) click to toggle source
Calls superclass method Kiss::KissAbstract#close
# File lib/kiss/kiss_serial.rb, line 72
def close(*args, **kwargs)
    super

    if @exit_kiss
        write_interface(MODE_END)
    end

    if @serial == nil or @serial.closed?
        raise 'Attempting to close before the class has been started.'
    else
        @serial.close
    end
end
connect(mode_init=nil, *args, **kwargs) click to toggle source
Calls superclass method Kiss::KissAbstract#connect
# File lib/kiss/kiss_serial.rb, line 49
def connect(mode_init=nil, *args, **kwargs)
    super

    @serial = SerialPort.new(@com_port, @baud, @byte_size, @stop_bits, @parity)
    @serial.read_timeout = SERIAL_READ_TIMEOUT

    if mode_init
        write_interface(mode_init)
        @exit_kiss = true
    else
        @exit_kiss = false
    end

    # Previous verious defaulted to Xastir-friendly configs. Unfortunately
    # those don't work with Bluetooth TNCs, so we're reverting to None.
    if kwargs
        kwargs.each do |name, value|
            write_setting(name, value)
        end
    end
end

Protected Instance Methods

read_interface() click to toggle source
# File lib/kiss/kiss_serial.rb, line 31
def read_interface
    read_data = @serial.read(@read_bytes)
    if read_data
        return read_data.chars.map { |c| c.ord }
    else
        return nil
    end
end
write_interface(data) click to toggle source
# File lib/kiss/kiss_serial.rb, line 41
def write_interface(data)
    unless data.is_a? String
        data = data.map { |b| b.chr }.join
    end
    @serial.write(data)
end