Sha256: 46bd93165a4c17bf6c11900787684f2b539921cda0ca5a7317a70f58180e825b

Contents?: true

Size: 935 Bytes

Versions: 1

Compression:

Stored size: 935 Bytes

Contents

module Dino
  module Components
    class Button < BaseComponent
      UP = "01"
      DOWN = "00"

      def initialize(options={})
        super(options)

        @down_callbacks, @up_callbacks, @state = [], [], UP

        self.board.add_digital_hardware(self)
        self.board.start_read
      end

      def down(callback)
        @down_callbacks << callback
      end

      def up(callback)
        @up_callbacks << callback
      end

      def update(data)
        return if data == @state
        @state = data

        case data
          when UP
            button_up
          when DOWN
            button_down
          else
            return
        end
      end

      private

      def button_up
        @up_callbacks.each do |callback|
          callback.call
        end
      end

      def button_down
        @down_callbacks.each do |callback|
          callback.call
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dino-0.8 lib/dino/components/button.rb