module Smalruby::Hardware

ハードウェアの名前空間

Public Instance Methods

create_hardware(klass, pin = nil) click to toggle source

ハードウェアのインスタンスを生成する

作成したハードウェアのインスタンスはキャッシュする

@param [Class] klass ハードウェアのクラス @param [String|Numeric] pin ピン番号 @return [Object] ハードウェアのインスタンス

# File lib/smalruby/hardware.rb, line 74
def create_hardware(klass, pin = nil)
  klass = NullHardware unless @initialized_hardware
  key = [klass, pin]
  @hardware_cache.synchronize do
    @hardware_cache[key] ||= klass.new(pin: pin)
  end
  @hardware_cache[key]
end
failed?() click to toggle source

ハードウェアの初期化に失敗したかどうかを返す

# File lib/smalruby/hardware.rb, line 63
def failed?
  @failed_init_hardware
end
init(options = {}) click to toggle source

ハードウェアを準備する

@param [Hash] options オプション @option options [String] :device シリアルポートのデバイス名。

WindowsだとCOM1など
# File lib/smalruby/hardware.rb, line 33
def init(options = {})
  return if @initialized_hardware

  defaults = {
    device: ENV["SMALRUBOT_DEVICE"] || nil,
    baud: 19_200,
  }
  opt = Util.process_options(options, defaults)

  txrx = Smalrubot::TxRx.new(opt)
  begin
    world.board = Smalrubot::Board.new(txrx)
    @initialized_hardware = true
  rescue Exception
    Util.print_exception($!)
    @failed_init_hardware = true
  end
end
stop() click to toggle source

ハードウェアを停止させる

# File lib/smalruby/hardware.rb, line 53
def stop
  @hardware_cache.synchronize do
    @hardware_cache.values.each do |h|
      h.stop if h.respond_to?(:stop)
    end
    @hardware_cache.clear
  end
end