Sha256: 73eefbc3496821933a82b10936a2448463e2159ef238a4092304b701db9b97fb

Contents?: true

Size: 799 Bytes

Versions: 2

Compression:

Stored size: 799 Bytes

Contents

module Nerpin
  class Controller
    def initialize(destination, nrpn_class)
      @destination = destination
      @nrpn_class  = nrpn_class
    end

    def puts(id, value)
      mutex.synchronize do
        [
          [0x63, (id >> 7) & 0b1111111],
          [0x62, id        & 0b1111111],
          [0x06, value[:v0x06]],
          [0x26, value[:v0x26]]
        ].each do |message|
          @destination.puts(0b10110000, message[0], message[1])
        end
      end
    end

    def nrpns
      @nrpn_class.instance_variable_get('@nrpns')
    end

    private

    def mutex
      @mutex ||= Mutex.new
    end

    def method_missing(name, *args)
      if nrpn = @nrpn_class.find_by_key(name)
        puts(nrpn.id, nrpn.value(args.first))
      else
        super
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
nerpin-0.0.2 lib/nerpin/controller.rb
nerpin-0.0.1 lib/nerpin/controller.rb