module Apa102Rbpi::SpiSimulator

Public Class Methods

base() click to toggle source
# File lib/apa102_rbpi/spi_simulator.rb, line 47
def base
  Apa102Rbpi.base
end
begin() { |self| ... } click to toggle source
# File lib/apa102_rbpi/spi_simulator.rb, line 6
def begin
  yield self
end
clock(data) click to toggle source

Placeholder method, no-op

# File lib/apa102_rbpi/spi_simulator.rb, line 11
def clock(data)
end
display(led_frames) click to toggle source

Prints a strip on its own line

# File lib/apa102_rbpi/spi_simulator.rb, line 26
def display(led_frames)
  puts "[#{extract_pixels(led_frames)}]"
end
extract_pixels(led_frames) click to toggle source
# File lib/apa102_rbpi/spi_simulator.rb, line 30
def extract_pixels(led_frames)
  pixels = ""
  (led_frames.size / 4).times do |idx|
    idx *= 4
    # frame data is 32 bytes:
    # first byte is brightness (unused)
    # next 3 bytes depend on the frame offsets

    r = led_frames[idx + base.led_frame_rgb_offsets[:red]] || 0
    g = led_frames[idx + base.led_frame_rgb_offsets[:green]] || 0
    b = led_frames[idx + base.led_frame_rgb_offsets[:blue]] || 0
    pixels << Paint['•', [r, g, b]]
  end

  pixels
end
write(data) click to toggle source

Prints a strip in place

# File lib/apa102_rbpi/spi_simulator.rb, line 15
def write(data)
  # strip off header frame bytes
  base.start_frame.size.times { data.shift }
  # strip off end frame byes
  base.end_frame.size.times { data.pop }

  # carriage return at the end lets us update strip display in place
  print "[#{extract_pixels(data)}]\r"
end