Sha256: dbfcbcb48096e1c11ebf51518eda805e8b7a7a712c040b91dd0fe056bfcc021f
Contents?: true
Size: 1.57 KB
Versions: 1
Compression:
Stored size: 1.57 KB
Contents
begin require 'pi_piper' rescue LoadError require 'whipped-cream/pi_piper' end module WhippedCream # Actor that manages all interaction with a plugin class Runner def self.instance @instance end def self.create_instance(plugin) @instance = new(plugin) end attr_reader :plugin def initialize(plugin) @plugin = plugin configure end def name plugin.name end def pins @pins ||= {} end private def configure configure_buttons configure_sensors end def configure_buttons plugin.buttons.each do |button| create_pin button, direction: :out define_singleton_method button.id do pin = pins[button.id] pin.on sleep 0.25 pin.off end end end def configure_sensors plugin.sensors.each do |sensor| if sensor.pin define_sensor_method_with_pin sensor else define_sensor_method_with_block sensor end end end def define_sensor_method_with_pin(sensor) create_pin sensor, direction: :in define_singleton_method sensor.id do pin = pins[sensor.id] pin.value == 1 ? sensor.high : sensor.low end end def define_sensor_method_with_block(sensor) define_singleton_method sensor.id do sensor.block.call end end def create_pin(control, options = {}) return unless control.pin options[:pin] = control.pin pins[control.id] = PiPiper::Pin.new(options) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
whipped-cream-0.0.1pre3 | lib/whipped-cream/runner.rb |