module ExtremeFeedbackDevice

Constants

VERSION

Public Class Methods

environment() click to toggle source
# File lib/extreme_feedback_device.rb, line 16
def environment
  ENV["EFD_ENV"] || "production"
end
infinite_loop() click to toggle source
# File lib/extreme_feedback_device.rb, line 65
def infinite_loop
  settings['infinite_loop'] ||= {}
  interval = settings.infinite_loop['sleep'] || 30

  %w(INT TERM).each do |signal|
    trap(signal) do
      puts "\r\nReceived SIGINT - turning off all LEDs and exit ..."
      pi.leds_black!
      pi.leds_black! # ... just to be safe
      exit(0)
    end
  end

  while true
    run
    sleep(interval)
  end
end
jenkins() click to toggle source
# File lib/extreme_feedback_device.rb, line 24
def jenkins
  @jenkins ||= ExtremeFeedbackDevice::Jenkins.new(settings.jenkins.user, settings.jenkins.token, settings.jenkins.url)
end
logger() click to toggle source
# File lib/extreme_feedback_device.rb, line 8
def logger
  if settings['log']
    @logger ||= ::Logger.new(settings.log.file, settings.log['keep'], settings.log['size'])
  else
    @logger ||= ::Logger.new(STDOUT)
  end
end
pi() click to toggle source
# File lib/extreme_feedback_device.rb, line 28
def pi
  @pi ||= ExtremeFeedbackDevice::Pi.new(settings.pi.num_leds, settings.spi['device'])
end
run() click to toggle source
# File lib/extreme_feedback_device.rb, line 32
def run
  jobs = jenkins.jobs
  num_leds = settings.pi.num_leds
  map_leds = settings.pi.map_leds

  num_leds.times do |led_idx|
    job_name = map_leds["i_#{led_idx}"]
    if job_name
      job = jobs.find { |job| job.name == job_name }
      if job
        if job.fail?
          pi.leds[led_idx] = ::Color::RGB::Red
        elsif job.unstable?
          pi.leds[led_idx] = ::Color::RGB::Yellow
        elsif job.success?
          pi.leds[led_idx] = ::Color::RGB::Green
        elsif job.inactive?
          pi.leds[led_idx] = ::Color::RGB::Grey
        elsif job.disabled?
          pi.leds[led_idx] = ::Color::RGB::Grey
        else # any other state
          pi.leds[led_idx] = ::Color::RGB::Black
        end
      else # no job with this name in jenkins
        pi.leds[led_idx] = ::Color::RGB::Black
      end
    else # no job associated with this led_idx
      pi.leds[led_idx] = ::Color::RGB::Black
    end
  end
  pi.write!
end
settings() click to toggle source
# File lib/extreme_feedback_device.rb, line 20
def settings
  @settings ||= ExtremeFeedbackDevice::Settings
end