Sha256: 622d4e29adf7582ce1613b14f484506159e39940b556e1fc264a7d009b419c79

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

module Denko
  module Behaviors
    module Component
      include State
      attr_reader :board

      def initialize(options={})
        super(options)
        before_initialize(options)
        initialize_board(options)
        convert_pins(options)
        initialize_pins(options)
        register
        after_initialize(options)
      end

      def micro_delay(duration)
        board.micro_delay(duration)
      end

      protected

      def initialize_board(options={})
        raise ArgumentError, 'a board is required for a component' unless options[:board]
        @board = options[:board]
      end

      def register
        board.add_component(self)
      end

      def unregister
        board.remove_component(self)
      end

      # Setup::Base only requires a board.
      # Include modules from Setup or override this to use pins.
      #
      def before_initialize(options={}); end
      def convert_pins(options={});      end
      def initialize_pins(options={});   end
      alias :initialize_pin :initialize_pins

      # Override in components. Call super when inheriting or mixing in.
      def after_initialize(options={}); end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
denko-0.13.0 lib/denko/behaviors/component.rb